Ruby + NokogiriでWebスクレイピング入門

  • このエントリーをはてなブックマークに追加

Webスクレイピングとは ※1

ウェブスクレイピング(Web scraping)とは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。ウェブ・クローラー(Web crawler) あるいはウェブ・スパイダー(Web spider)とも呼ばれる。

Webサイト上のテキストデータを活用したいけど、APIやCSV等が提供されていないというケースは結構多いですよね。
今回はウェブサイトからテキストデータを取得する方法を紹介をしたいと思います。

RubyのNokogiriというライブラリを使います。

 

環境構築

構築環境はUbuntu 14.04です。

という環境が構築できました。

Nokogiriの1.6系のものが入ります。
1.5系まではlibxml2やlibxsltも自分でインストールする必要があったのですが、
libxml2やlibxsltのバージョンの関係で動作しないケースが多々あったみたいです。
1.6系から依存ライブラリを同梱し、Nokogiriのインストール時に環境に合わせてビルドされるようになりました。※2

 

とりあえず動かしてみる

Yahooファイナンスから日経平均株価のヒストリカルデータを取得し、
CSVとして保存するサンプルです。

1-3行目:

必要ライブラリを読み込み

5行目:

スクレイピング先のURLを指定

7-11行目:

スクレイピング先の文字コードとHTMLの取得

13行目:

取得したHTMLをパースしてDOM化

15-23行目:

必要なデータの取得し、CSV化
必要データの抽出にはxpathで指定する方法※3とcssセレクタ※4で指定する方法の大きく2つの方法があります。上記ではxpath方式を使ってDOMを取得しています。

25-27行目:

CSVファイルの出力

 

Nokogiriを使ったWebスクレイピングまとめ

Nokogiriを使ったWebスクレイピングは下記プロセスでほとんど対応できるかと。

スクレイピング先のURLの指定
 ↓
HTMLの取得
 ↓
取得したHTMLをDOM化
 ↓
必要情報の抽出
 ↓
データの保存

あとは、xpathなりcssセレクタを良い感じに書くこと。
各方式の書き方は下記※3※4を参考にしてください。


※1 Wikipedia – ウェブスクレイピング
※2 http://qiita.com/suu_g/items/fcf549e16c797a9d7dc0
※3 実際に書くにあたってはこのサイトや、チートシートが大変役に立ちます。
※4 CSSセレクタの基本的な内容はこのサイトとかを参考に。
  • このエントリーをはてなブックマークに追加