ICC



RSSについて

RSSはブログや配信サイトのヘッドライン情報の配信などに利用されています.XMLフォーマットを使用しており,一定の規則のもとに書かれています.ただし,RSSには1.0(Rich Site Summary)と,2.0(Really Simple Syndication)が存在し,この間の互換性はありません.

それぞれのRSSの構成は以下のようになっています.

RSS 1.0
rdf:RDF
channel 要素 title 
link 
description 
itemsitem要素の集まり
item 要素 title 
link 
description 

RSS 2.0
rss
channel 要素 title 
link 
description 
pubDate任意項目
item 要素 title任意項目
link任意項目
description任意項目
pubDate任意項目
注) item要素はchannel要素に含まれます(複数可).


使用方法

gooの公開しているRSSを使用するには,まず下記URLへアクセスします.
http://www.goo.ne.jp/rss/
一覧から使用したい情報(RSS)を見つけます. 各行の右にある ボタンのリンクにRSSドキュメントへのリンクが入っているので,そのURLを取得します. (ここで取得したURLを各プログラムのRSSパーサーに渡します)


RSSを使用するプログラムの作成

1. RSSをパースする

「使用方法」のように,使用するRSSのアドレスを取得し,各プログラムのパーサに渡します.
例:(URLは「ウェブ検索最新キーワード」を使用します)

  • PHPの場合

require_once('XML/Feed/Parser.php'); // XML_Feed_Parserを使用する宣言
$source = file_get_content('http://search.goo.ne.jp/rss/newkw.rdf')
// RSSを読み込む
$rss = new XML_Feed_Parser($source); // RSSをパース

  • Perlの場合

use LWP::Simple; # 指定したURLの内容を取得するライブラリ
use XML::RSS; # RSSを読み込むためのライブラリ

my $source = get('http://search.goo.ne.jp/rss/newkw.rdf');
# RSS本文を読み込む
my $rss = new XML::RSS; # RSSパーサの生成
$rss->parse($source); # RSSをパース

JavaScriptやFlash等のクライアントサイドのスクリプト言語やアプリケーションは他サーバへのアクセスが許可されていないため,PHPやPerlを使用し,その出力結果を使用します.


2. 1.でパースしたRSSを読み出す

パースしたRSSはパーサの決まった項目に格納されます.ここから取得して,プログラムで使用します. item要素はパーサの配列に格納されています.RSS1.0およびRSS2.0の構造のパースは同様に行われるので,要素名以外(items要素の位置など)を気にする必要はありません.
Perlの場合,文字コードがUTF-8になるため,フラグをはずすことが必要になります.このためconv_encodingという関数を作成して,フラグをはずしてから出力しています.

  • PHPの場合

// channel要素の取り出し
print $rss->title; // title要素を取得して出力
print $rss->link; // link要素を取得して出力

// item要素の取り出し
foreach($rss as $items){
	print $items->title; // title要素を取得して出力
	print $items->description; // description要素を取得して出力
}


  • Perlの場合

# channnel要素の取り出し
$channel = $rss->{'channel'}; # channel要素の取得
print $channel->{'title'}; # title要素を取得出力
print $channel->{'link'}; # link要素を取得して出力

# item要素の取り出し
foreach $item (@{$rss->items}){
	print $item->{'title'}; # title要素を取得して出力
	print $item-{'description'}; # description要素を取得して出力

}

# BOMをはずす関数()
sub conv_encoding{
	my $source = shift;
	utf8::encode($source);
	return $source;
}