scrAPIを使ってみた
使ってみたんだけど、3MBのHTMLをパースしたら重くてちょっと不満だった。まだネットであまり使用例を見掛けないので、とりあえず書いたコードを張り付けてみる。
require 'rubygems' require 'scrapi' fc = File.open("rubymanjp.hhk").read hhk_item = Scraper.define do process "object param[name=Name]", :name => "@value" process "object param[name=Local]", :local => "@value" result :name, :local end index = Scraper.define do array :items process "html ul li", :items => hhk_item result :items end index.scrape(fc).each{|x| puts x.name puts x.local }
3MBのHTMLをパース後の/proc/pid/statusによると、VmPeakが38792kB。1KBをパースしても10MB近くは食ってるので、メモリ使用量的には妥当な感じ、かなぁ。正しくないHTMLでもパースしてくれる所が嬉しい。(正しくないHTMLを扱わないといけないこと自体は悲しい。)
繰り返しを書くときには、まず全体を定義して(この場合だとindexだ)、その中で繰り返し要素(この場合だとhhk_itemだ)を書いて繰り返しを行う、という感じ。