8月 02

RSS(RubyでRSSをパースする)

説明
RSSファイルを参照し、オリジナルのリーダーを作成する。

RSSの解説は、下のサイトを参考にしました。
RSSによるサイトの情報の要約と公開
RSSモジュールの解説は、下のサイトを参考にしました。
RubyRSS
RSS Parser
確認環境
OS:Windows2000、WindowsVista
Ruby:ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
必要なパッケージ:RSSモジュール(インストールが必要です)
注意
RSSモジュールは、標準でインストールされていません。
Windowsでパッケージを追加するには、上にあるリンクからRSSモジュールのパッケージファイルをダウンロードしてください。
インストール方法は、パッケージを解凍して、その中にある「setup.rb」を実行、つまり「ruby setup.rb」でインストールできます。
リファレンスどおりにコーディングしても、RSSのバージョンによっては正常にパースできないことがあるようです。
動作確認を行ったモジュールのバージョンは0.1.7です。ファイル名でバージョンがわかるようにしてください…。
サンプル
http://pear.php.net/のRSS
ソース
#!/ruby/bin/ruby

require 'rss'

# RSSファイルのURL
url = "http://raa.ruby-lang.org/index.rdf"
content = ""

open( url ) do |s|
	content = s.read
end

# RSSのパース
begin
	rss = RSS::Parser.parse( content )
rescue RSS::InvalidRSSError
	rss = RSS::Parser.parse( content, false )
end

# HTMLの出力開始
print "Content-type: text/html\n\n"

# channnelタグ出力
channel = rss.channel
printf("<html>\n<head>\n\t<title>RSS - %s</title>\n</head>\n<body>\n",
	channel.title
)

printf( "<h3><a href=\"%s\">%s</a></h3>\n<p>%s</p>\n",
	channel.link,
	channel.title,
	channel.description
)

# imageタグ出力
if rss.image != nil then
	image = rss.image
	printf( "<p><a href=\"%s\"><img src=\"%s\" alt=\"%s\" align=\"right\"></a></p>\n",
		image.link,
		image.url,
		image.title
	)
end

# itemタグ出力
print "<dl>\n"
rss.items.each do |i|
	printf( "\t<dt><a href=\"%s\">%s</a></dt>\n\t<dd>%s</dd>\n",
		i.link,
		i.title,
		i.description
	)
end
print "</dl>\n"

# HTMLの出力終了
print "</body>\n</html>\n"

exit;

更新履歴

2007-08-19
nilチェックをさせたら動いた。モジュールなら、自動的にやってくれればいいものを。
2007-08-02
公開。このモジュールではパース出来ないRSSも多く、あまり使えるものにはなっていない。