ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

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)
    })

jQueryライクというだけあり、なんとなくjQueryっぽく書けばスクレイピングできる印象です。
いじょ。