Perl で、RSS を処理する

使用するモジュール


use Encode;
use Encode::Guess;
use XML::RSS;
use LWP::UserAgent;
use HTTP::Request;
#!/usr/bin/perl use Encode; use Encode::Guess; use XML::RSS; use LWP::UserAgent; use HTTP::Request; my $url = 'https://perltips.twinkle.cc/index.rdf'; # 初期化 my $proxy = new LWP::UserAgent; # UseAgent の作成 my $req = new HTTP::Request(GET=>$url); my $rss = new XML::RSS; my $res = $proxy->request($req); # $url にアクセスする my $xml = $res->content; # コンテンツ (この場合は RSS/XML) を取得 my $enc = guess_encoding($xml, qw/euc-jp shiftjis 7bit-jis utf8/); # 文字コードを判定 ref($enc) or die "Can't guess: $enc"; # 自動判定がうまくいかなかったときのエラー処理 # utf8 で保存 ($enc->name を decode することにより、utf8 で変数に保管される $xml = decode($enc->name, $xml); eval {
$rss->parse($xml);
}; if($@) { # $rss->parse が失敗したとき
print "error\n";
} # @{$rss->{items}} に、RSS のすべてのエントリー (item) が入る foreach my $item ( @{$rss->{items}} ) {
# ケータイ (iモード) で出力したいので Shift_JIS にする
my $title       = encode('shiftjis', $item->{title});
my $description = encode('shiftjis', $item->{description}); # 上に同じ

print qq|<a href="$item->{link}">$title</a>\n|; # タイトルをリンクつきで出力
print qq|$description<br />\n|;                 # 概要 (description) を出力
} exit;