あまりしっかり読んでなくてスルーしていたのですが, http://wota.jp/ac/?date=20070115#p01 で使われているような特定のページにCSSセレクタをかけるようなケースならまさにHpricotが適任だと思います。 ScrAPIの良いところはむしろ簡単にParser用のクラスを分かりやすく書けるところにあると思うので大量のページをクロールして定型のデータを貯めたりしようとする際にはあのAPIがいいなぁと思います。 ということで上のページと同じことをHpricotでやってみます。 require 'kconv' #=> true require 'open-uri' #=> true require 'hpricot' # 以下の例はversion 0.5以上を想定してます #=> true $KCODE = 'u' #=> "u" maiha = Hpricot.p
scrAPIよりも使いやすい感じのHpricotですが、「innerText」が上手くHTMLエンティティーを戻してくれないので、違うメソッドをつけてみました。 require "rubygems" require 'hpricot' class Hpricot::Elem def [](a) CGI.unescapeHTML(get_attribute(a)) end def to_text r = [] traverse_text{|text| case text when Hpricot::CData r << text.content else r << CGI.unescapeHTML(text.inner_text.gsub("\n"," ").gsub(/ +/," ").strip) end } r.join end end hp = Hpricot('<html><bog
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く