コードを舐める日々

わからないことがわからないことをしる日々

RSS解析について

「CGI・Perl」サイト閉鎖のお知らせ - All Aboutを参考に
Perlの勉強としてやってみた。
このままコピペだが・・。
今後の勉強のためのメモ。

#!/usr/local/bin/perl

use strict;
use lib qw(./mylib);
use XML::RSS;
use LWP::Simple;

# RSSデータのURL
#my $url = '自分の好きなRSSフィード'; 例としてjkondoRSSを記載する。
my $url = 'http://d.hatena.ne.jp/jkondo/rss';

# RSSデータの保存用ファイル
my $file = './hatena.rss';

# RSSデータのチェック(更新されていれば取得)
mirror($url, $file);

# 保存されているRSSデータを解析
my $rss = new XML::RSS;
$rss->parsefile($file);

# HTMLの出力開始
print <<EOM;
Content-type: text/html

<html>

<head>
<title>RSS to HTML</title>
</head>

<body>
EOM

# サイト情報を取得
my $channel = $rss->{'channel'};
my $image   = $rss->{'image'};

# サイト情報を出力
print <<EOM;
<h2><a href="$channel->{'link'}">$channel->{'title'}</a></h2>

<a href="$image->{'link'}">
<img src="$image->{'url'}" alt="$image->{'title'}" align="right"></a>
$channel->{'description'}<br clear="all">
EOM

# アイテムを取得・出力
print qq|<dl>\n|;
foreach my $item ( @{$rss->{'items'}} ) {
    # 出力
    print <<EOM;
    <dt><a href="$item->{'link'}">$item->{'title'}</a><dt>
    <dd>$item->{'description'}</dd>
EOM
}
print qq|</dl>\n|;

# 出力終了
print <<EOM;
</body>
</html>
EOM

exit;