読者です 読者をやめる 読者になる 読者になる

狐の王国

人は誰でも心に王国を持っている。

それrubyなら2行で出来るよ!

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セレクタXPathXML/HTML要素を拾ってこれるし、ERBはRubyのコードをそのままテンプレートに埋めこむことが可能。とても便利なのでぜひぜひ使いましょう。

以下参考文献。

Sugano `Koshian' Yoshihisa(E) <koshian@foxking.org>