BLOGTIMES
2007/10/20

scRUBYt!を使ってmixiの足跡をスクレイピング

  ruby  scrape  mixi  xml 
このエントリーをはてなブックマークに追加

"ruby スクレイピング"というキーワードでいろいろ検索してまわってみたらWWW::MechanizeよりもscRUBYt!の方が面白そうだったので、これをつかって軽く練習してみることにします。他にもscrAPIというのもあるみたいですが、日ごろからXSLのコーディングをしていたりすることもあってCSSのセレクタ表記よりもXPathに馴染んでいるということでscRUBYt!を選んでみました。

かるく肩慣らしということで、mixiの足跡をスクレイピングしてみました。
なぜ足跡なのかといえば、特に深い意味はないんですけど。。。。。

mixiの足跡をスクレイピングする

getmixifootprint.rb

require "rubygems" require "scrubyt" config = {"user"=>"user@example.com", "pass"=>"passwords"} mixi_footprint = Scrubyt::Extractor.define do fetch "http://mixi.jp/" fill_textfield "email",config["user"] fill_textfield "password",config["pass"] submit fetch "http://mixi.jp/show_log.pl" footprints '//div[@id=\'log_color\']' do footprint "/ul/li" do accessed lambda {|x| x[0, 20]}, :type => :script name '/a[1]' userid '/a[1]/@href' end end end mixi_footprint.to_xml.write(STDOUT, 1)

簡潔でいい感じですね。
たぶん今後のお仕事に大活躍してくれそうな予感。

ちなみにプログラムの例はプロジェクトにscrubyt-examplesとしてあがっているので、これらを参考にして同じように書いていくと簡単かも。

ひとつ疑問が

「scRUBYt!」ってなんて読むんだろう?

2009/1/5追記

足跡削除機能が追加に伴ってページが変更されたため、スクリプトをアップデートしました。

getmixifootprint.rb

require "rubygems" require "scrubyt" config = {"user"=>"user@example.com", "pass"=>"passwords"} mixi_footprint = Scrubyt::Extractor.define do fetch "http://mixi.jp/" fill_textfield "email",config["user"] fill_textfield "password",config["pass"] submit sleep 3 fetch "http://mixi.jp/show_log.pl" footprints '//ul[@class=\'logList01\']' do footprint "/li" do date '/span[@class=\'date\']' name '/span[@class=\'name\']/a[1]' url '/span[@class=\'name\']/a[1]/@href' end end end mixi_footprint.to_xml.write(STDOUT, 1)

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2242
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    Andy (2007/10/22 17:00) <%HatenaAuth()%>

    多分「スクルビーイト」でいいのでは。
    要はscr(aping)+ruby+itの略ってことですよね。

    hsur (2007/10/26 02:01) <%HatenaAuth()%>

    最後のtがちょっと気になってて、これってナンだろうと思ったら読めなくなっちゃったんですが、あまり難しく考える必要がなかったわけですね。
    ありがとうございます。

    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン