scrubyt
なんか結局うまくいかなくてソース読むっていう……
Extractor.define が返すのは Scrubyt::ScrubytResult で (Scrubyt::Result ではない)、ScrubyResult は ResultNode のサブクラスになってる。
ResultNode は Array のサブクラスになっているんだけど、Array#inspect が空の Array を表示してしまっていて混乱する。実際には中身があったりする。ドキュメントおうよりソース読んだほうがいいことを実感した……
あと mechanize が 1.8.5 以上要求する。ubuntu LTS は ruby1.8.4 なのでエラーでる。(1.9 は入れてるけど、まだ 1.9 で gem を入れたくない)
/usr/lib/ruby/gems/1.8/gems/mechanize-0.6.10/lib/mechanize/inspect.rb:44: undefined method `pretty_inspect' for class `WWW::Mechanize::Page' (NameError)
めんどいので
class Object; def pretty_inspect(*); self.inspect; end; end
書いてほうち。
#!ruby -Ku
class Object; def pretty_inspect(*); self.inspect; end; end
require "rubygems"
require "scrubyt"
mixi_community = Scrubyt::Extractor.define do
fetch "http://mixi.jp/"
fill_textfield "email", config["user"]
fill_textfield "password", config["pass"]
submit
fetch "http://mixi.jp/view_community.pl?id=26374"
# member_num "#communityInfo .contents03 .memberNumber"
member_num "//dl[@class='communityInfolistMiddle clearfix memberNumber']/dd[1]"
end
num = mixi_community.to_hash[0][:member_num][/¥d+/].to_iあたらしくなった mixi でコミュニティの参加人数とるやつをかいた。慣れればかなり早くすくれいぱー書けそうだなぁ。
でも自動解析みたいなのは読みにくいと思う