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;
トラックバック URL: https://perltips.twinkle.cc/trackback/32
Posted on 2005-12-01 by yas |