2008年4月7日月曜日

rubyでスクレイピングまとめ

スクレイピングって、あれね。

HTMLなどから特定条件で文字を取得するやつね。

昔はなんらかの言語のHTTPライブラリと正規表現を使ってガリガリ書くのが多かったんだけど、最近はスクレイピング用のアプリケーションとか、専用ライブラリも出てきたんで、ちょっとまとめてみました。

条件は

  • プログラムを書く必要があるならRubyにする
  • プログラミングが必要ないなら、それが一番(データを取り出して終わり)
  • 特定ワードで検索して、検索結果からデータ取り出しってのを繰り返す
  • もちろん日本語を扱う

で、候補に挙がったのは以下の4つでした。

■web-harvest

  • Javaアプリ。
  • プログラミングの必要が無い。その代わりにXMLで条件を指定する。
  • 本家
  • MOONGIFTでの紹介記事
  • 本家の翻訳記事?
  • プログラミグの必要がないのはいいけど、きっとXMLだけの設定だとできないことがある気がする。(感覚値)
  • 英語版アプリしかないもので、日本語を扱うのはかなり不安。(UTF8だけならまだしも、まだSJISとかEUCあるよね)
  • ぐぐった限りでは、日本人ユーザいなさそう。もちろん日本語情報源無し。(2008/4/6現在)
  • ダメポと判断

■scRUBYt!

  • HTTPでの接続から、リンクのクリックやスクレイピングまでフォロー。
  • DSLっぽく書ける感じ。
  • 型にハマるなら、ちょー簡単に取得できる。
  • Hpricotを必要とする。
  • 本家
  • @ITの紹介記事
  • Rubyライブラリなので、KCODEさえ入れておけば日本語は大丈夫と判断。
  • ちょー簡単にまとまるので、とりあえずやりたいことがこのライブラリのサポート範囲内かどうかを検討するべき。
  • Hpricotを使っているので、Hpricotの上位に位置するのかと言えば、そうでもなく、作者曰く「使い分け」らしい。scRUBYt!は高機能で少ない手順でいろいろなものを、というスタンスなので、細かく制御したかったらHpricot+WWW::Mechanizeなんでしょうね。

■Hpricot

■scrAPI

  • Rubyのライブラリ。
  • フィルターっぽくあらかじめ欲しいものが決まっているときは便利なのかも。
  • 紹介記事
  • いまいち?

てな感じにまとまって、結局仕様が許すならscRUBYt!、自分で細かく制御したいならHpricot+WWW::Mechanizeという結論になりました。

さーつくってみよー

0 件のコメント: