HTMLのタグを除去するのは出来るんだけど、その後、それぞれの要素を整理して、あらためてHTMLのテンプレートに流し込むのができない><という記事。
せっかくRubyを使ってるんだからHpricotとERBを使いましょう。簡単に出来ます。
#!/usr/bin/ruby require 'rubygems' require 'hpricot' require 'erb' require 'kconv' table = Hpricot(STDIN.read.toutf8).search('.section table tbody tr') puts ERB.new(DATA.read).result(binding) __END__ <dl> <% table.each do |tr| %> <dt><%= (tr/'td[2] a').inner_html %></dt> <dd><%= (tr/'td[3]').inner_html %></dt> <% end %> </dl>
こんな感じ。
コード見ればわかるとおりSTDINからデータを読んでるので、以下のように実行する。
$ wget http://d.hatena.ne.jp/hrkt0115311/20090710/1247237322 $ ruby hrkt.rb <1247237322
HpricotはCSSセレクタやXPathでXML/HTML要素を拾ってこれるし、ERBはRubyのコードをそのままテンプレートに埋めこむことが可能。とても便利なのでぜひぜひ使いましょう。
以下参考文献。
2018年2月追記
上の例は hpricot を使った古い例なので nokogiri を使ってはてなブックマークのRSSからタイトルとURLだけ抜いてくるサンプルをここに貼っておく。
#!/usr/bin/env ruby require 'nokogiri' require 'erb' require 'open-uri' uri = 'http://feeds.feedburner.com/hatena/b/hotentry' doc = Nokogiri::XML.parse(open(uri).read) items = doc.css('item') puts ERB.new(DATA.read).result __END__ <% items.each do |item| %> <%= item.css('title').inner_text %>: <%= item.css('link').inner_text %> <% end %>