goqueryでスクレイピングする
Golangでスクレイピングしようと思い、いくつかのライブラリを検討しました。
それらの中でjQueryライクに扱うことができるgoqueryを使ってみたので、メモ代わりに書いておきます。
GitHub - PuerkitoBio/goquery: A little like that j-thing, only in Go.
とはいっても、ほぼ公式のREADMEにある通りです。
例えば以下のようなテーブルからリンクのURLと表示名を取得したい場合
<table id="sample_table"> <tr> <td><a href="xxxx1.html">Name1<a></td> </tr> <tr> <td><a href="xxxx2.html">Name2<a></td> </tr> </table>
このようにgoqueryを使って取得しました。
doc, err := goquery.NewDocument("対象ページのURL") if err != nil { return } doc.Find("#sample_table").Children().Find("a").Each(func(_ int, s *goquery.Selection) { url, _ := s.Attr("href") name, _ := s.Html() fmt.Printf("url = %s, name = %s\n", url, name) })