ちょっと寄り道で EntryFullText ぽく
寄り道をするつもりはなかったのだけれども、試したくなったので。
「ruby でデータ収集処理」を EntryFullText ぽくしてみました。
実際に Plagger を使ったことがないし、見よう見まねなので、
設定と動作が本家のもの違っているかもしれませんが。
xpath はまだ実装していないし。
テスト用のサイトは音泉。
結果を見てみると、スカイガールズ ラジオのタイトルが取得できてないな。
def dump(data) data.each {|d| puts "{" d.each_pair {|key, val| puts %Q{ #{key} => "#{val}"} } puts "}" } end def extract_text(text, opt, &hook) # argument no check items = opt[:extract_capture].split(/\s/) data = [] text.scan(/#{opt[:extract]}/m) { |r| entry = {} 0.upto(items.size - 1) {|i| entry[items[i].to_sym] = Regexp.last_match(i+1) } hook.call(entry) unless hook.nil? data << entry } data end if $0 == __FILE__ text = '' # File::open("onsen.html") {|f| # text = f.read # } require 'open-uri' open('http://www.onsen.ag/') {|f| text = f.read } data = extract_text(text, { :extract => %q{<td width="135"[^>]?>(?:(?:<.+?>)*)(.+?)(?:<.+?>)</td>.+?<td align="center"><img .+?alt="([^"]+).+?(http://[^\s]+?\.asx)}, :extract_capture => %q{title author link}, } ) {|entry| # extract_after_hook entry[:title].strip! } dump data end