- blogs:
- cles::blog
2010/02/15

Anemoneというクローラーフレームワークを使ってみる


これまでクローラー使い捨てのクローラーは結構力業で作ってきたのですが、さすがにこういうことをやり始めてから1年以上が経ちこのままでは立ちゆかない事がいろいろと顕在化してきたので、クローラーを作るためのフレームワークをいろいろ調べていました。
JavaであればLuceneのサブプロジェクトであるNutchや、Seasarプロジェクトで開発されているS2Robot、PerlであればGunghoあたりに興味があるのですが、後処理の部分はRubyで書いてしまってあるので今回はAnemoneというフレームワークをつかってみることにします。
Anemone - Ruby Web-Spider Framework
Anemone is a Ruby library that makes it quick and painless to write programs that spider a website. It provides a simple DSL for performing actions on every page of a site, skipping certain URLs, and calculating the shortest path to a given page on a site.
The multi-threaded design makes Anemone fast. The API makes it simple. And the expressiveness of Ruby makes it powerful.
† 実際につかってみる
インストールはgemを使う場合はgem install anemoneで一撃です。
anemone_test.rb
#!/usr/bin/ruby
require 'rubygems'
require 'anemone'
opts = {
:user_agent => "TestRobot/0.00",
:delay => 1,
:depth_limit => 0,
}
Anemone.crawl("http://www.yahoo.co.jp", opts) do |anemone|
anemone.on_every_page do |page|
p page.url
p page.doc.xpath("//head/title/text()").first.to_s if page.doc
p page.body[0..200]
end
end
実行結果
#<URI::HTTP:0x15b82243e08c URL:http://www.yahoo.co.jp/>
"Yahoo! JAPAN"
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n<meta http-equiv"
使い方もシンプルでいいですね。pageからはNokogiriのインスタンス(doc)が取得出来るので、後はこのdocからテキストを抜き出すこともできますし、rawのデータが欲しければbodyにアクセスすることもできます。こんな感じでURLにアクセスして、タイトルを抜き出したり、bodyの先頭200バイトを切り出したりなんかもできるので便利ですね。
ただ、少し使った限りではMechanizeの文字化けと同じような問題を持っているようなので、差し当たりどうやって凌ぐかというのが問題になりそうです。少しソースを読んでみるしかないですね。
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3423
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(113403)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112045)
3 . 年次の人間ドックへ(111538)
4 . 2023 年分の確定申告完了!(1つめ)(111134)
5 . 三菱鉛筆がラミーを買収(111021)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112045)
3 . 年次の人間ドックへ(111538)
4 . 2023 年分の確定申告完了!(1つめ)(111134)
5 . 三菱鉛筆がラミーを買収(111021)
cles::blogについて
Referrers