MechanizeでHTMLだけをパースする
Rubyでスクレイパーを組む際に、僕はMechanizeをよく使います。
パーサが未完成なときはサイトへのアクセスは最小限にしたいですよね。
そこで、サイトのHTMLをローカルへ落としてきて、HTMLだけをパースするのなら
アクセス先のサイトへはテストアクセスしなくてすむようになります。
今回は、MechanizeでローカルHTMLをパースする方法をご紹介します。
まず、パースしたいページ(http://www.hogehoge.com/index.html)をローカルへダウンロードします。
それをパースするコードはこんな感じです。
parser.rb
#!ruby require 'mechanize' # サイトへアクセスしないで、ローカルHTMLから WWW::Mechanize::Pageクラスを生成 page = WWW::Mechanize::Page.new(URI.parse("http://www.hogehoge.com/index.html"), {'content-type'=>'text/html'}, open('index.html', 'r'){|f|f.read}, 200) # パースしてみる page.search("table").each{|table| print("inner table text: ", table.inner_text, "\n") }
こんな感じです。