エントリー名 :

Magpie RSSを使ってRSS・AtomをPHPで取得&表示

Magpie RSSを使ってRSS・AtomをPHPで取得&表示

先日作った日本語版Google News(ニュース)のRSS・Atom 表示では、RSS・Atom(XML)の取得や解析・表示にMagpie RSS - PHP RSS Parserというパーサーを使っています。以下は、PHPでRSSを使う場合のメモです。

Atom・RSS(XML)を解析(パース)する

RSSやAtomはXML文書の一種です。XML文書は解析(パース)して、欲しいデータを取り出して使います。

本当にちょっとした解析(パース)なら、正規表現を使ったりしてもいいのかもしれませんが、普通は面倒でそんなことはやっていられません!PHPのXMLパーサ関数を使ったり、各所で公開されているRSS用のライブラリーを使った方が楽ちんです。

RSS(XML)パーサ用のPHPライブラリを使う

PHPのRSSパース用のライブラリーには、 Magpie RSS - PHP RSS Parserや、 PEAR :: Package :: XML_RSS(要XML_Parser)があります。

MagpieRSSには、Cache(キャッシュ)機能も付いているし、データの取得もURLを指定するだけでOKなのでオススメです。 以下、MagpieRSSの使い方です。(PEARのXML_RSSの使い方はそのうちに…)

PHP Magpie RSSの使い方

まず、SourceForge.net: Filesで、 magpierssをダウンロードし、解凍。 解凍したフィルダの中にある4つのファイル 「rss_cache.inc」、 「rss_fetch.inc」、 「rss_parse.inc」、 「rss_utils.inc」、 とSnoopy.class.incが入っている「extlibフォルダ」を適当なフォルダ(以下、名前をrssとします)にコピーします。 次に、このrssフォルダをまるごと適当なディレクトリーにアップロードします。

後は、rssディレクトリーがあるのと同じディレクトリーに、 Cache(キャッシュ)用のディレクトリと、Magpie RSSを使うためのPHPファイルを次のように用意すれば使えるはずです。

1.Cache(キャッシュ)用のディレクトリを作成

名称cache(define~で自分で設定することもできます)でディレクトリーを作成。 パーミッションを「777」等にして、書き込みの権限を与えておきます。

2.PHP スクリプト例

ブラウザからアクセスして、RSS情報の表示をするためのPHPファイルを次のように用意します。 (以下、名前をmag.phpとします)

PHP RSS表示用のスクリプト(ソース)


<?php
$q_encode=urlencode("グーグル");//検索キーワード
$output="rss";//rss or atom
$num=10;//表示件数

define('MAGPIE_CACHE_AGE','7200');//cacheを残す時間
define('MAGPIE_CACHE_DIR', './cache');//Cache(キャッシュ)用のディレクトリ
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');//アウトプットの文字コード

require_once './rss/rss_fetch.inc';//アップロードしたrss_fetch.incがあるところ
$rss = fetch_rss("http://news.google.com/news?hl=ja&ned=us&q=$q_encode&ie=UTF-8&output=$output&num=$num");
//print_r($rss);//取得結果

foreach($rss->items as $key => $value){
	print "<p>".$value['title']."</p>\n";
	print "<div>".$value['description']."</div>\n";
	/*
	配列のキーは、title、description以外にも
	link,guid,pubdate,summary,date_timestamp
	などが指定できます
	*/
}
?>

全体の構成は

rss
   - rss_cache.inc
   - rss_fetch.inc
   - rss_parse.inc
   - rss_utils.inc
   extlib
      -Snoopy.class.inc
mag.php
cache

ブラウザでmag.phpを表示すれば、$q_encodeで指定したキーワード関連のニュースが表示できると思います。

PHPのXMLパーサ関数を使う

ライブラリーを使わないで、用意されているXMLパーサ関数を使っても同じことができます。 RSS・Atom専用では無いので、アマゾンのWebサービスを始めとする一般的なXMLデータの解析にも使えます。

PHPのXMLパーサ関数としては、 「xml_parser_create」 「xml_ parser_ set_ option」 「xml_parse_into_struct」 「xml_parser_free」 あたりを使えばいいかもしれない。


$parser = xml_parser_create(); 
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1); 
xml_parse_into_struct($parser,$xmldata,$values_array,$index_array);
xml_parser_free($parser); 
print_r($values_array);
print_r($index_array);

$xmldataに解析(パース)したいXMLデータを入れて、上のスクリプトを実行すれば、 $values_array,$index_arrayにXMLの構造が配列として代入されます。

XMLデータは、filefopenとか, Net_Socketで取得することになると思います。

PHP5からは、SimpleXML関数が追加されたので、 こちらを使うともっと簡単にできます。(参考:Do You PHP? - PHP5を試してみる - SimpleXML関数でRSSしてみる)


Magpie RSSを使ってRSS・AtomをPHPで取得&表示の前後の記事

カテゴリー [ メモ・覚え書き ] [ PHP ] [ RSS ]



アマゾン(Amazon.co.jp) RSS

一生折れない自信のつくり方

1. 本 一生折れない自信のつくり方

[2009-11-25)]五段階評価4.5 今を生きることができるきっかけ いくつか質問をさせてください。 「家族に笑顔であいさつできますか?」 「靴を並べることはできますか?」 「ではそれを続けることはできますか?」 きっとほとんどの...

ウォーカームック 世田谷区Walker vol.1 三軒茶屋 二子玉川 61802-76 (ウォーカームック 175)

2. 本 ウォーカームック 世田谷区Walker vol.1 三軒茶屋 二子玉川 61802-76 (ウォーカームック 175)

[2010-04-23)]レーベル:角川マーケティング(角川グループパブリッシング) 。製造:角川マーケティング(角川グループパブリッシング) 。出版:角川マーケティング(角川グループパブリッシング) 。発売:角川マーケティング(角川グループパブリッシング)。関連:ウォーカームック 世田谷区Walker vol.2 下北沢 61802‐83 (ウォーカームック 182)

いまさら聞けないパソコン活用術 疑問やトラブルを自分の力で解決する技を身につけよう (サイエンス・アイ新書 26)

3. 本 いまさら聞けないパソコン活用術 疑問やトラブルを自分の力で解決する技を身につけよう (サイエンス・アイ新書 26)

[2007-07-18)]五段階評価5.0 ブログ文化についていけない私には実にありがたかった パソコンを使い始めたころは、よく雑誌を購入していたものだが、いざトラブルに遭遇したときに、どの雑誌のどの号に情報が載っているのかを探さなければいけないという不...

ずっと彼氏がいないあなたへ

4. 本 ずっと彼氏がいないあなたへ

[2002-12-24)]五段階評価3.5 自己反省と『よっしゃ』が得られる本 恋愛にモタついてている時に、読むのがいいと思いました!! “原因は自分にあったのだな!”っと、悲しいけれど気がつくから。 でも、まじめに読むと落ち込むから、さら...

みんなのPython Webアプリ編 [みんなのシリーズ]

5. 本 みんなのPython Webアプリ編 [みんなのシリーズ]

[2007-11-30)]五段階評価3.0 しなやかに学べるWeb開発のABC Pythonを使ったWeb開発の入門書。「みんなのPython」の続編。 本書がすばらしいと思うのは、CGIを使った簡単なWebアプリケーションから始まって、O...

流通情報システム化の動向 2009~2010

6. 本 流通情報システム化の動向 2009~2010

[2009-06-23)]作者:財団法人流通システム開発センター 。レーベル:流通システム開発センター 。製造:流通システム開発センター 。出版:流通システム開発センター 。発売:流通システム開発センター。関連:EDIの知識 (日経文庫)

詳解RSS~RSSを利用したサービスの理論と実践

7. 本 詳解RSS~RSSを利用したサービスの理論と実践

[2005-08-08)]五段階評価5.0 インターフェース項目を詳しく知りたい設計者向き RSSおよびAtomのインターフェース項目を詳しく知りたくて購入しました。 RSS 1.0 , RSS 2.0 , RSS 0.91 , Atomについて ...

2

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)



このエントリーのトラックバックURL:

アーカイブ

コメント

トラックバック

広告

あわせて読みたい

あわせて読みたい