情報抽出の準備としてのHTML整形

RSS on Ruby - 鯨飲馬食コード」に引き続き、もう少しリンクベースのRSSRDF Site Summaryという意味)を効率的に作れないかなと考えている。前回作ったのは正規表現で力づくに抽出していたので。

そこで「なんでもRSS」関連の論文である「なんでもRSS - HTML文書からのRSS自動生成」を読んでみた。どうやら情報抽出の前に、tidyを用いてHTML文書をwell-formedなXML文書に変換しているらしい。

というわけで、HTML文書ををtidyに流し込みXML文書を得るスクリプトを書いたよ。

#!/usr/bin/ruby -Ks

require 'open-uri'
require 'kconv'

html_string = ""
target_url = "http://example.com/"
tmp_html = "tmp.html"

open(target_url) do |f|
  f.each do |line|
    html_string = html_string +  Kconv::tosjis(line)
  end
end

tmp = File.open(tmp_html, "w")
tmp.puts html_string
tmp.close

`./tidy -shiftjis -asxml -f /dev/null -clean -indent -modify #{tmp_html}`

テンポラリファイルはライブラリのTempfileを利用した方がいいのかもしれないけど、まぁ今のところは気にしなくていいだろう。

出力されたXML文書を、添付ライブラリのrexmlあたりでこねくり回せばいろいろとできそう。ただrexmlをどう使っていいのかよく分からないので、そこらへんはそのうちにでも。