perl の XML::RSS で RSS を表示
日記トップページのサイドバーに、CNET Japan と Slashdot Japan の記事見出しを表示してみました。記事見出しはサイトが配信している RSS ファイルを利用しています。
RSS から情報を取り出すにはいろいろなやり方がありますが、ここでは perl の XML::RSS モジュールを利用しました。このモジュールを利用すると XSLT などの知識が無くても手軽に RSS から情報を取得できます。Red Hat Linux 9 には含まれていませんので、別途 RPM を作成してからインストール。XML::RSS は XML::Parser を内部で利用しているのでこれも必要になりますが、XML::Parser は Red Hat Linux 9 には含まれています。
次のような Perl スクリプトを作成します。
RSS から情報を取り出して、HTML の一部として出力します。
#!/usr/bin/perl use strict; use encoding 'utf-8'; use XML::RSS; my $file = $ARGV[0]; my $rss = new XML::RSS; eval { $rss->parsefile($file); }; my ($link, $title); for my $item (@{$rss->{items}}) { $link = $item->{link}; $title = $item->{title}; printf "<li><a href=\"%s\">%s</a></li>\n", $link, $title; }
上記のスクリプトを rss2list.pl として保存します。
実際には、件数の指定や、サニタイジングなど、の処理をしていますが、基本的にはこのような流れになります。また、出力フォーマットが UTF-8 以外の場合は、Jcode モジュールなどで変換する必要があります。
次に、wget コマンドで RSS ファイルをダウンロードして、スクリプトを通して、ファイルに出力します。
$ wget http://japan.cnet.com/rss/index.rdf -O cnetjapan.rdf $ ./rss2list.pl cnetjapan.rdf > cnetjapan.inc
あとは、トップページの HTML で SSI を使ってこのファイルをインクルードしています。RSS の取得とスクリプトの実行を cron で定期的に行なうように設定すれば、自動的に最新の情報が表示できます。また、他の RSS ファイルも利用することができます。
コメントはまだありません
No comments yet.
Sorry, the comment form is closed at this time.