電気ウナギ的○○

About Home

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

shinoda (2011年2月 4日 17:14)

ある、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 通信関数使ってたしな(^^;)、やっぱモジュールは便利だな。

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/1465

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE