物欲購入目録日誌 写真館
スポンサーサイト
--.--.-- (--:--) スポンサー広告
Twitterでつぶやく
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Rubyのクローラー(スパイダー)フレームワーク Anemone と Mechanize #eurekaao
2012.02.22 (01:49) プログラミングtrackback(0)comment(0)
Twitterでつぶやく
anemone.jpg


webの情報を収集収集しようとすると必然的に必要になってくるのがクローラープログラム。

Rubyには優秀なスクレイピングツールのMechanizeというフレームワークが提供されていて、オイラはこれでクローラーを作っていたのですが、、最近、Anemone(アネモネ)というクローラーに特化したフレームワークがあるというのでちょっと触ってみた完走と、Mechanizeの違いについて。

Anemone An easy-to-use Ruby web spider framework
http://anemone.rubyforge.org/

Mechanizeがどちらかというと汎用なスクレイピングツールという側面が強い。そしてMechanizeは組み方によってはクローラーも作ることができる。

anemoneは完全にクローラー用のフレームワークとして設計されている点が大いに違うという印象。
用意されているmethodやデータ保存用にDBが簡単に組み込めるなど、、非常に面白い。


これから、クローラーを作る人がいたら、anemoneベースに作成してもいいのではないかと思う。

インストール方法はgemで入れられるので一発


$ gem install anemone

サンプルコードはこんな感じ

--
#! /usr/bin/ruby
#
# [exp anemone]
#
$KCODE="u"
require 'rubygems'
require 'anemone'
require 'hpricot'
require 'kconv'

Anemone.crawl("http://blog.livedoor.jp/geek/") do | anemone |
  anemone.on_every_page do |page|
    # BODYをHpricotに渡してパーズする
    doc = Hpricot(page.body)
    # タイトルを表示
    puts (doc/"title")[0].inner_html.toutf8
  end
end
--
ここで一つ注意なのが、、オイラが以前扱っていたようにanemoneは標準のHTMLパーサーとしてnokogiriを使う。
このnokogiri(ibxml2)がくせもので、Mechanizeとnokogiriで発生した一部の日本語のページで文字化けするという事象がここでも生じる。

http://tachiphoto.blog61.fc2.com/blog-entry-1479.html


それを回避するためには、nokogoriを使わずに、馬鹿正直にnokogiriを使わずにhpricotを利用してHTMLを渡せばよい。ただそれだけ。これで文字化けの問題は回避される!!(`・ω・´)キリ ...
prevhome next












トラックバックURL
→http://tachiphoto.blog61.fc2.com/tb.php/1603-13be95c9
home
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。