RSSフィードの解析をしてくれる Perl モジュール

ある、RSSフィード(下の例はAtomフィードだが)からタイトルとリンク先の情報だけを抜き出す処理であれば、Perl で正規表現を使えば以下のように簡単に作成できる。
たった12行だよ。正規表現が簡単に書ける Perl はこういうちょっとした処理を書くと無敵の強さだな。(いや、もっと短く書けるシェルスクリプトはあるかもしれんけど、ソースのわかりやすさが Perl とは雲泥の差であろう。宗教戦争になるからあまり追求せんけど(笑))

use LWP::Simple;

my $feed    = LWP::Simple::get('http://blog.netandfield.com/shar/atom.xml');

for(;;) {
    if ($feed =~ /(<entry>.*?<title>(.*?)<\/title>.*?<link .*?href=\"(.*?)\".*?<\/entry>)(.*)/s) {
        print 'URL: ', $3, "\n";
        print 'Title: ', $2, "\n";
        $feed = $4;
    }
    else {
        last;
    }
}

つーことで、いつもこんな感じで済ませてたのだが、今回は XML::FeedPP モジュールを使ってみた。
他のモジュールとの依存関係がなくて、Perl モジュールをユーザーがインストール出来ない環境でも、XML/FeedPP.pm と XML/TreePP.pm をアップするだけで使えるようなので、それならOKだなっと。
(まあ、うちのテストサーバには普通に CPAN 使ってインストールしたけど:-P)

で、XML::FeedPP モジュール使って上記の処理と同じものを書くと、

use XML::FeedPP;

my $source  = 'http://blog.netandfield.com/shar/atom.xml';
my $feed    = XML::FeedPP->new( $source );

foreach my $item ($feed->get_item()) {
    print 'URL: ', $item->link(), "\n";
    print 'Title: ', $item->title(), "\n";
}

こうなる。

短っ!たった 7行だ。(笑)

ほんま、Perl4 の頃からずっと Perl 使ってるので、(本当にメジャーなもの以外)モジュール使わずついつい自分で処理を書いてしまうんだけど(LWP モジュール使わずにずっと自前の http 通信関数使ってたしな(^^;)、やっぱモジュールは便利だな。

トラックバック(0)

このブログ記事を参照しているブログ一覧: RSSフィードの解析をしてくれる Perl モジュール

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/1465

コメントする

このブログ記事について

このページは、shinodaが2011年2月 4日 17:14に書いたブログ記事です。

ひとつ前のブログ記事は「SOAP::Liteは結局SOAPバージョン1.2でないと通信できなかった・・・」です。

次のブログ記事は「なんと、「アブラトリプル」が出来なくなっていた・・・」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら