2012年4月2日月曜日

Perlを使ってRSSのタイトルを取得する!

まずは、今日勉強したソースです。

----
use FindBin::libs;
use strict;
use utf8;
use Encode;
use LWP::Simple;
use XML::RSS;

my $url = "http://rss.dailynews.yahoo.co.jp/fc/rss.xml";
my $document = LWP::Simple::get($url)
or die "cannot get content from $url";

my $rss = XML::RSS->new;
$rss->parse($document);
for (@{$rss->{items}}) {
print encode('shift-JIS', $_->{title}), "\n";
}
----


yahooのRSSから、タイトル部分のみをコマンドプロンプトに表示させます。

復習のためにも、1行目から見てみます。
use FindBin::libs;

これはCPANのモジュール。
ファイルパスを一生懸命探してくれるツールみたいです。


use strict;

これもperlを使うならぜひ利用したほうがいいもの。
初めて勉強しました。

use utf8;

文字コードを指定します。

use Encode;

エンコードを使うので、useで指定。

use LWP::Simple;
use XML::RSS;

両方ともCPANのモジュール
RSSを利用したり、HTTPコンテンツを扱うためにuseで指定します。


my $url = "http://rss.dailynews.yahoo.co.jp/fc/rss.xml";

URLの変数を作って、その中に取得したいRSSのURLを指定

my $document = LWP::Simple::get($url)

URLをゲットしてきてdocumentに保存します。

or die "cannot get content from $url";

もし出来なかったら、「cannot get content from $url」を表示させて終了!


my $rss = XML::RSS->new;

RSSのインスタンス変数を作ります。


$rss->parse($document);

取得して保存したdocumentをパースして$rssに保存。

for (@{$rss->{items}}) {

コンテンツがあるまで繰り返します。

print encode('shift-JIS', $_->{title}), "\n";

タイトルの部分をシフトジスで表示!

}


以上でプログラムの終了です。

print encode('shift-JIS', $_->{title}), "\n";
ここの文字コードを変えることで、文字化けしたり、
文字化けを修正できたりしました。




0 件のコメント:

コメントを投稿