最強の情報収集術!初心者向けRuby+NokogiriでWebスクレイピング徹底解説
はじめに
情報氾濫の時代、インターネット上には数えきれないほどの情報で溢れています。効率よく情報収集を行うことができたら・・・そんなあなたにオススメしたいのはWebスクレイピング。
プログラミングを使って自動でWeb情報をクローリングし、加工した上で必要な情報を効率よく収集します。 プログラミングと聞いて顔が曇った方も多いかも知れませんが、現在はプログラミングの敷居もかなり下がっています。
Rubyは日本語製のスクリプト言語。和製ゆえにドキュメントも豊富です。今回はWindowsな方向けにRubyの導入から実際にサンプルプログラムを動かしてみる所まで詳説したいと思います。
Rubyのインストール
Ruby InstallerのHPから「Ruby 2.0.0-p***」をダウンロードします。
インストーラーを実行してください。
日本語を選択。
同意するを選択。
インストールをクリック。
セットアップが完了します。
コマンドプロンプトからプログラムを直接実行できるようにPATHを通します。
システムのプロパティの詳細設定タブから環境変数をクリック。
システム環境変数のPathを選択し、編集をクリック。
セミコロン(;)の後に C:\Ruby200\bin と入力。
スタートメニューのアクセサリからコマンドプロンプトを起動して下さい。
ruby -v と入力し、バージョンが表示されればインストールは正常に行われています。
Nokogiriのインストール
NokogiriはWebページを解析するライブラリです。
コマンドプロンプトから gem install nokogiri と入力し実行するだけでインストールが始まります。
はてブホットエントリをスクレイピングしてみる
はてブのホットエントリをゴッソリ記録するプログラムを作成してみます。
Cドライブ直下に program というフォルダを作成してください。
コマンドプロンプトを起動し、cd C:\program と入力し移動してください。
下記のサンプルコードを C:\program 内に hatena.rb という名前で保存し、コマンドプロンプトから ruby hatena.rb と入力し実行してください。
require 'nokogiri' require 'open-uri' doc=Nokogiri::HTML(open("http://b.hatena.ne.jp/hotentry")) data=doc.css("div.entry-contents") data2=doc.css("ul.users") entries=Array.new 48.times {|i| if data[i].nil? or data2[i].nil? then break end title=data[i].css("a.entry-link").inner_html url=data[i].css("a.entry-link")[0]["href"] usr=data2[i].css("span").inner_html post=data[i].css("li.date").inner_html entries<<[title,url,usr,post] } File.open('C:\program\hatena.txt',"w") do |file| entries.each do |entry| file.write("#{entry[0]}(#{entry[2]}):#{entry[1]}\r\n") end end
はてブのホットエントリーが記録された hatena.txt が生成されればうまく動作しています。
Webページの解析はHTMLタグベースで行われます。
例えば、<div class="****">内容</div> というタグに囲まれる情報を抽出したい場合、Nokogiriオブジェクト.css("div.****") と記述します。
ここでは<div class="entry-contents"></div>で囲まれるはてブの各ホットエントリの情報を抽出するために、data=doc.css("div.entry-contents") でdata配列に格納しました。取り出したエントリ群を1個ずつ C:\program\hatena.txt のファイルに書き出していきます。
まとめ
今回はWebスクレイピングの入門として開発環境の構築とサンプルコード実行までを解説しました。Windowsタスクスケジューラと連携して定期的に情報を収集したり、Railsと連携してデータベースを構築したり、使いこなしてくると色々な応用が考えられます。今後もさらに色々なテクニックを紹介していきたいと思います。
参考情報

Spidering hacks―ウェブ情報ラクラク取得テクニック101選
- 作者: Kevin Hemenway,Tara Calishain,村上雅章
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2004/05
- メディア: 単行本
- 購入: 52人 クリック: 904回
- この商品を含むブログ (103件) を見る

Web解析Hacks ―オンラインビジネスで最大の効果をあげるテクニック & ツール
- 作者: Eric T. Peterson,株式会社デジタルフォレスト,木下哲也,有限会社福龍興業
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/11/08
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 78回
- この商品を含むブログ (21件) を見る