読者です 読者をやめる 読者になる 読者になる

Goでスクレイピングするためのgoquery

golang

これまで私はスクレイピングの処理はRubyでnokogiriとかを使っていたのですが、サーバへの負荷が軽くなることを期待して、今回はGoで書いてみました。

スクレイピングは使いやすいライブラリが利用可能かどうかが重要で、goqueryというのがよさそうだったので使ってみました。

github.com

以下のコードでは、現代美術用語辞典のArtwordsをスクレイピングして、キーワードを取得しています。

artscape.jp

package main

import (
    "fmt"
    "github.com/PuerkitoBio/goquery"
)

func GetPage(url string) {
    doc, _ := goquery.NewDocument(url)
    doc.Find(".listLink a").Each(func(_ int, s *goquery.Selection) {
        url, _ := s.Attr("href")
        if url != "#listtop" {
            keyword := s.Text()
            if len(keyword) > 0 {
                fmt.Println(keyword)
            }
        }
    })
}

func main() {
    tags := []string{"ア", "カ", "サ", "タ", "ナ", "ハ", "マ", "ヤ", "ラ", "ワ", "英字", "数字"}
    for _, tag := range tags {
        url := "http://artscape.jp/artword/index.php/wordlist_gyo?tag=" + tag
        // fmt.Println(url)
        GetPage(url)
    }
}

以下のエントリーを参考にしました。

mattn.kaoriya.net

qiita.com