1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GoでWebスクレイピング

Posted at

事前準備

以下のコマンドで、ライブラリをインストールしてください

go get -u github.com/PuerkitoBio/goquery

使い方

やり方の手順として以下の手順でやります。

  1. URL情報の抽出
  2. プログラムを書く
  3. 実行

URL情報の抽出

まず、スクレイピングしたいURLを決める必要があります。
今回は、Amazonの本検索でISBMの検索をしたときに一番最初に来たデータからタイトルを抽出するようにします。
日経Linux 2020 7月のISBMは4910071930709のため4910071930709で検索します。

検索URL

ブラウザのF12などをおして、デベロッパツールでタイトル部分のHTML情報を調べましょう

image.png

上記図を見ますと、タイトルの部分の情報で使われているCSSの情報は**.a-size-medium.a-color-base.a-text-normal**ということがわかります。
これをキーワードに検索をかけましょう

Goのコードを書く

以下のように記載します。

main.go
package main

import (
	"fmt"

	"github.com/PuerkitoBio/goquery"
)

func main() {
	isbm := "4910071930709"
	url := "https://www.amazon.co.jp/s?k=" + isbm + "&i=stripbooks"
	doc, err := goquery.NewDocument(url)
	if err != nil {
		fmt.Println(err.Error())
	}
	doc.Find(".a-size-medium.a-color-base.a-text-normal").Each(func(i int, s *goquery.Selection) {
		if i == 0 {
			fmt.Println(s.Text())
		}
	})
}

プログラムの順序を簡単に説明しますと以下の順序になります。

  1. スクレイピング対象のURLを決める
  2. URLからデータを持ってくる
  3. .a-size-medium.a-color-base.a-text-normal」クラスのデータを抽出する
  4. 一番初めに抽出したデータ内のテキストのみ出力する

実行結果

実行すると以下のような結果が得られます。

$ go run main.go
日経Linux(リナックス) 2020年7月号

なお、などの使用されている、**href=**の結果を取得したいときは、
urldata := s.Attr("href")
などと記載すると取得することができます。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?