perl の XML::RSS で RSS を表示

2004-4-28 09:45
このエントリーをはてなブックマークに追加

日記トップページのサイドバーに、CNET JapanSlashdot 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.

32 queries. HTML convert time: 4.286 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン