Hpricotでスクレイピング
Hpricotでスクレイピングします。
インストール
gem install hpricot
hpricotはCで書かれた拡張ライブラリを使用しています。Cygwin環境だけかもしれませんが、インストール時に環境に合わせてコンパイルされるため、makeやgccが必要でした。
使ってみる
データ(data.html):
<html> <head></head> <body> <ul id="a" class="x"> <li>mii</li> <li>tora</li> </ul> <ul id="b" class="y"> <li>kuro</li> <li>shiro</li> </ul> </body> </html>
ちょっと謎っぽいコードですが、「/」が要素を探す関数で、「"ul"」がその引数、戻り値は配列の派生クラスです。Hpricot()関数でデータをロードして検索します。検索結果のノードに対して、さらに検索を行うこともできます。
サンプル:
require 'rubygems' require 'hpricot' File.open( "./data.html", "r" ) { |f| doc = Hpricot(f) (doc/"ul").each { |ul| (ul/"li").each { |li| puts li.inner_text } } }
出力:
mii tora kuro shiro
サンプル:
# XPathで選択 File.open( "./data.html", "r" ) { |f| doc = Hpricot(f) (doc/"ul[@id='a']/li").each { |li| puts li.inner_text } } puts "----" # CSSで選択 File.open( "./data.html", "r" ) { |f| doc = Hpricot(f) (doc/"ul#a li").each { |li| puts li.inner_text } }
出力:
mii tora ---- mii tora
Hpricot A Fast, Enjoyable HTML Parser for Ruby
RubyでHTMLとWebを操作するためのライブラリ、HpricotとWWW::Mechanize