【Golang】Collyを使用してWebスクレイピングを行う

Golang
この記事は約4分で読めます。

CollyはGo言語でWebスクレイピングを行うためのライブラリです。
以下にCollyの使い方を紹介します。

インストール

go modコマンドでgo.modファイルを作成し、go getでcollyを導入します。

 

collyの基本的な使用方法

Collyを使用してスクレイピングを行うには以下のような流れで処理を行います。

例として、このブログのトップページのプロフィール部分のプロフィール画像URLとプロフィール名を
取得してみます。

このコードは実行するとプロフィール画像のURLとプロフィール名が表示されます。

collectorのOnHTMLメソッドにはセレクター要素ごとに動作を定義できるので
今回のコードでは以下の2つの動作を設定しています。

  • #author_box-3 div figure imgのセレクター要素でsrc属性をprofileImageURLに格納する
  • #author_box-3 div div div.author-name aのセレクター要素のテキストをprofileNameに格納する

リンク先のページの情報を取得する

Collyを使用すると指定したページに表示されている各リンクをたどって、リンク先のページの情報を取得することができます。
このブログのトップページに表示されている最新の記事10件にアクセスして、各記事のタイトルと何分で読了できるかの情報を取得してみます。

コードを実行すると各ブログのURLにアクセスし、リンク先のタイトルと何分で読了できるかの情報を表示します。

 

ファイルや画像を保存する

Collyを使って画像をダウンロードして保存するにはcollectorのOnResponseメソッドを使用します。

OnResponseはサーバーからレスポンスを受け取るたびに呼び出されます。
レスポンスにはサーバーから返されたHTMLや画像などのコンテンツが含まれているので
Saveメソッドを使用することでレスポンスの内容を保存することができます。

下記のコードは、このブログのトップページのプロフィール画像を保存するサンプルです。

コードを実行すると、コードを実行したパスに、このブログのプロフィール画像をprofile.pngとして
保存します。

エラーを処理する

Collyを使ってWebスクレイピングを行う際にエラーが発生することがあります。
例えばサーバーから404エラーが返されたり、タイムアウトしたりすることがあります。

Collyではエラーを処理するためにOnErrorメソッドが用意されています。
このメソッドを設定することで、エラーが発生したときの動作を定義することができます。

下記のコードではテストサーバーから404 Not Foundが返ってくるのでOnErrorメソッドを使って
エラーを処理しています。

コードを実行すると下記のように表示されます。

もしくはVisitメソッドがerrorを返すので、errorの内容を元に処理を行います。

 

参考リンク

コメント