情報抽出の準備としてのHTML整形
「RSS on Ruby - 鯨飲馬食コード」に引き続き、もう少しリンクベースのRSS(RDF 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をどう使っていいのかよく分からないので、そこらへんはそのうちにでも。