2016-10-09 3 views
1

私はwebscraperを作っていますし、私は間違ってgolangの内部タグトークンにアクセスするには?

何をやっている場合はそう指摘してくださいする前に私はそれをやったことがない私は

をスクラップするgolangを使用していますが、私はテーブルに

<table> 
    <tr> 
     <td>XYZ</td> 
     <td>XYZ</td> 
     <td>XYZ</td> 
    </tr> 
    <tr> 
     <td>XYZ</td> 
     <td>XYZ</td> 
     <td>XYZ</td> 
    </tr> 
    <tr> 
     <td>XYZ</td> 
     <td>XYZ</td> 
     <td>XYZ</td> 
    </tr> 
    <tr> 
     <td>XYZ</td> 
     <td>XYZ</td> 
     <td>XYZ</td> 
    </tr> 
</table> 
を与えられていると仮定します

私は各trからデータを抽出したいが、2番目のtdだけ

また、テーブルタグ内のコンテンツを持つ新しいhtml文字列を返すことができ、html外部テーブルタグ内のすべてのeleseを削除できますか?すべてのHTMLの例の井戸

答えて

1

最初は間違っている、あなたはすべて終了タグを逃した</TR ></TD >

仕事のこの種のために常により良い使用でありますjQueryのようなDOMセレクタのいくつかの並べ替え。 Goのために私はgoqueryをお勧めします、それは小さなライブラリであり、かなりうまくいきます。あなたのソリューション:

package main 

import (
    "log" 

    "github.com/PuerkitoBio/goquery" 
) 

func main() { 
    doc, err := goquery.NewDocument("http://your.url.com/foo.html") 
    if err != nil { 
     log.Fatal(err) 
    } 

    doc.Find("table tr").Each(func(_ int, tr *goquery.Selection) { 

     // for each <tr> found, find the <td>s inside 
     // ix is the index 
     tr.Find("td").Each(func(ix int, td *goquery.Selection) { 

      // print only the td number 2 (index == 1) 
      if ix == 1 { 
       log.Printf("index: %d content: '%s'", ix, td.Text()) 
      } 
     }) 
    }) 
} 

あなたがtd.Textに注意しているように()は各TDタグの内容を持っています。私はあなたに私がhttps://play.golang.org/p/Rtb1Tqz1Wb

+1

は、私はそう決して行かないように新しいです洙多くの をいただき、ありがとうございますテストするために使用され、完全なファイルを左 はどういたしましてこの – Ezio

+0

について知っていました!人々があなたを助けることができるように、常にあなたの答えと例を再確認することを覚えておいてください:) –

+0

確かに、私は質問を編集します – Ezio

関連する問題