TwitterSearchAPIのフィードをパースするin work

 
date:2010.05.07   posted by:fujii
 

PHP5のsimplexml_load_file関数を利用してTwitterSearchAPIのフィードをパースする

藤井です。

突然ですが、PHP5にはXMLデータを簡単に扱えるsimplexml_load_file関数があります。本当に簡単です。PHP5万歳です。

今回、これを使ってTwitterSearchAPIから返却されるフィードをパースしてみました。
なおTwitterAPIで返却されるフィードは、TwitterSearchAPIのそれとちょっと構造が違うくらいで、パースの方法はほとんど同じなので、以下はTwitterAPIでも全然使える方法です。
さて、TwitterSearchAPIのフィードの例を下に用意しました。

<?xml version=”1.0″ encoding=”UTF-8″?>
<feed xmlns:google=”http://base.google.com/ns/1.0″ xml:lang=”en-US” xmlns:openSearchhttp://a9.com/-/spec/opensearch/1.1/” xmlnshttp://www.w3.org/2005/Atom” xmlns:twitter=”http://api.twitter.com/”>
<id>tag:search.twitter.com,2005:search/worldcup</id>
(中略)
<link type=”application/atom+xml” href=”http://search.twitter.com/search.atom?max_id=8665100534&amp;page=2&amp;q=worldcup” rel=”next”/>

<entry>
<id>tag:search.twitter.com,2005:8665100534</id>
<published>2010-02-05T05:20:02Z</published>
<link type=”text/html” href=”http://twitter.com/skyperfectv/statuses/8665100534″ rel=”alternate”/>
<title>&#12304;NEWS&#12305;&#12468;&#12540;&#12523;&#12398;&#36960;&#12356;&#12452;&#12502;&#12521;&#12498;&#12514;&#12532;&#12451;&#12483;&#12481;&#12288;&#21516;&#20698;&#12465;&#12452;&#12479;&#12300;&#24515;&#37197;&#12394;&#12356;&#12301; #2010wc http://soccer.skyperfectv.co.jp/worldcup/p/detail.php?id=201002050421</title>
(中略)
<link type=”image/png” href=”http://a3.twimg.com/profile_images/662505461/___normal.jpg” rel=”image”/>
<twitter:geo>
</twitter:geo>
<twitter:source>&lt;a href=&quot;http://search.cpan.org/dist/Net-Twitter/&quot; rel=&quot;nofollow&quot;&gt;Perl Net::Twitter&lt;/a&gt;</twitter:source>
<twitter:lang>ja</twitter:lang>
(中略)
</entry>
<entry>
<id>tag:search.twitter.com,2005:8664841732</id>
  ・・・
という感じで、この後<entry></entry>で囲まれた塊が14個連続して出てきます。
必要なのはこの中身だけなので、<entry></entry>で囲まれた塊だけを抽出して内容を出力したいと思います。
$lines = simplexml_load_file(“http://search.twitter.com/search.atom?q=hogehoge”); //TwitterSearchAPIを使い「hogehoge」で検索
foreach ($lines->{‘entry’} as $line){ //ここで<entry>の中身をループ
echo $line->{‘title’} . ‘<hr>’;
}
「title」属性はつぶやきの内容を指すので、以上のプログラムによりつぶやきの内容を抽出して表示することができます。

さらに、つぶやきの内容だけでなくユーザーの画像も取得したい場合は、以下のように書きます。

$line->{‘link’}->attributes();

「attrebutes()」を使うことで、linkタグの属性が、属性名をキーとした連想配列として取得できます。
よって、特定の属性を表示したい場合はこのように書きます。
$attr = $line->{‘link’}->attributes();
echo $attr['href'];
または、このように書いてもOKです。こっちのほうが簡単かも。

echo $line->{‘link’}->attributes()->href;
これでめでたく画像アドレスを表示・・・と思ったのですが、なぜか出力は

http://twitter.com/skyperfectv/statuses/8665100534

となってしまいました。これは、画像のlinkタグの前に、元のつぶやきへのlinkタグ(「<link type=”text/html” href=”http://search.twitter.com/search?q=worldcup” rel=”alternate”/>」となっている部分)が入っていて、そちらを優先的に取得してしまうから。
そこで以下のように工夫してみました。

foreach ($line->{‘link’} as $link){
if(($link->attributes()->rel)==”image”){
echo $link->attributes()->href;
}
}

linkタグ要素を順番に取ってきて、rel属性がimageのものだけリンク先を出力する、という方法です。
TwitterAPIでも同じように処理する部分があるので、Twitterの開発をする際はぜひ覚えておくと良いです。

 
"lab"で関連する記事一覧 (シーケンスで表示する)
•2010.07.05-iPadアプリ「Twin Striker」をリリース in news
•2010.06.06-The Css AwardsのSite of the Dayに選ばれました in work
•2010.06.06-iPhoneアプリ「TWIN STRIKER」をリリース! in news
•2010.06.04-each関数を使ったテキスト上下中央揃え in work
•2010.05.31-オフィシャルサイトで使う予定だった技術 in work
•2010.05.31-オフィシャルサイトで使った技術その3 in work
•2010.05.31-オフィシャルサイトで使った技術その2 in work
•2010.05.28-Androidアプリ「Twin Striker」をリリース! in news
•2010.05.26-リンク集 in development
•2010.05.26-事例(Twin Strikerのワークフロー) in development
•2010.05.26-Coronaトラブル対策 in development
•2010.05.26-Coronaと他Projectの比較 in development
•2010.05.26-Tips4. iPhone3GSとAndroid1.6の動作の違い in development
•2010.05.26-Tips3. iPhoneで気をつけるべきこと in development
•2010.05.26-Tips2. Androidで気をつけるべきこと in development
•2010.05.26-Tips1. Flashからの変換 in development
•2010.05.26-Coronaの環境構築編 in development
•2010.05.26-Coronaの紹介編 in development
•2010.05.26-『日本代表に応援メッセージを送ろう!』携帯版リリース in news
•2010.05.25-オフィシャルサイトで使った技術その1 in work
•2010.05.25-おっぱいw-cup携帯版をリリースしました! in news
•2010.05.24-会津大学 ソフトウェアスタジオ キックオフ編 in work
•2010.05.24-会津大学 ソフトウェアスタジオ 準備編 in work
•2010.05.22-サッカー日本代表に応援メッセージを送ろう! in news
•2010.05.21-DSNオフィシャルサイトリニューアル in news
•2010.05.17-Processing.jsを使った万華鏡デモ in work
•2010.05.14-CSS3のアニメーション機能 in development
•2010.05.07-複数打ったはずのマーカーが1つしか表示されない in work
•2010.05.07-TwitterSearchAPIのフィードをパースする in work
•2010.04.24-HTML5&CSS3のデモを作成しました in work
•2010.02.16-JSパウワァ&ドラッグ機能の改善ついて in work
•2010.01.08-Processingおもしろい&使えるライブラリ10 in work
•2010.01.04-HTML5を学ぶつもりならスマートフォンを買おう in work
•2009.12.02-マルチタッチディスプレイ vol.02 in work
•2009.10.23-「くままり」で使用したBox2D AS3テクニック in work
•2009.10.22-mixiアプリモバイル作成前に見ておくべき10のまとめ in work
•2009.10.21-mixiアプリの公開手順 in work
•2009.10.15-mixiアプリ「鉄血王女と待受騎士団」をリリース in news
•2009.10.14-mixiアプリのパズルゲームについて in work
•2009.09.07-雑誌ウェブデザイニングに掲載されました! in work
•2009.08.27-mixiアプリ「くままり」をリリース in news
•2009.08.26-くままるのmixiアプリ『くままり』登場 in work
•2009.05.27-もっとがほしいDSN in work
•2009.04.16-Webページで角丸のボックスを作る方法あれこれ in work
•2009.03.02-みんなが大好きjQuery in work
•2009.02.27-マルチタッチディスプレイ vol.01 in work
•2009.02.20-ニールセンのユーザビリティ10原則 in work
•2009.02.11-センサー講座 Spe.001 Wiimote Whiteboard in work
•2009.02.06-センサー講座 Lec.003 Phidgetsインストール in work
•2009.02.06-エラスティックレイアウト in work
•2009.02.05-Jakob Nielsen博士 in work
•2009.01.30-固定幅レイアウト vs. リキッドレイアウト その2 in work
•2009.01.29-センサー講座 Lec.002 phidgetsの購入 in work
•2009.01.24-固定幅レイアウト vs. リキッドレイアウト その1 in work
•2009.01.20-センサー講座 Lec.001 どれを選ぶ? in work
 
 
"socolab"で関連する記事一覧 (シーケンスで表示する)
•2010.07.05-iPadアプリ「Twin Striker」をリリース in news
•2010.06.06-The Css AwardsのSite of the Dayに選ばれました in work
•2010.06.06-iPhoneアプリ「TWIN STRIKER」をリリース! in news
•2010.05.28-Androidアプリ「Twin Striker」をリリース! in news
•2010.05.26-リンク集 in development
•2010.05.26-事例(Twin Strikerのワークフロー) in development
•2010.05.26-Coronaトラブル対策 in development
•2010.05.26-Coronaと他Projectの比較 in development
•2010.05.26-Tips4. iPhone3GSとAndroid1.6の動作の違い in development
•2010.05.26-Tips3. iPhoneで気をつけるべきこと in development
•2010.05.26-Tips2. Androidで気をつけるべきこと in development
•2010.05.26-Tips1. Flashからの変換 in development
•2010.05.26-Coronaの環境構築編 in development
•2010.05.26-Coronaの紹介編 in development
•2010.05.26-『日本代表に応援メッセージを送ろう!』携帯版リリース in news
•2010.05.25-おっぱいw-cup携帯版をリリースしました! in news
•2010.05.24-会津大学 ソフトウェアスタジオ キックオフ編 in work
•2010.05.24-会津大学 ソフトウェアスタジオ 準備編 in work
•2010.05.22-サッカー日本代表に応援メッセージを送ろう! in news
•2010.05.21-DSNオフィシャルサイトリニューアル in news
•2010.05.17-Processing.jsを使った万華鏡デモ in work
•2010.05.17-位置情報サービスに必要な技術まとめ in work
•2010.05.17-Message Bottleをリリースしました in news
•2010.05.13-おっぱいW-cupをリリースしました in news
•2010.05.07-TwitterSearchAPIのフィードをパースする in work
•2010.05.05-メッセージボトル in services
•2010.05.05-おっぱいワールドカップ in services
•2010.05.05-DJ Turndroid in services
•2010.05.05-勇者マイミク in services
•2010.05.05-くままり。 in services
•2010.04.24-HTML5&CSS3のデモを作成しました in work
•2010.04.01-Androidアプリ「DJ Turndroid」をリリース! in news
•2010.02.16-JSパウワァ&ドラッグ機能の改善ついて in work
•2010.01.08-Processingおもしろい&使えるライブラリ10 in work
•2010.01.04-HTML5を学ぶつもりならスマートフォンを買おう in work
•2009.12.02-マルチタッチディスプレイ vol.02 in work
•2009.10.23-「くままり」で使用したBox2D AS3テクニック in work
•2009.10.22-mixiアプリモバイル作成前に見ておくべき10のまとめ in work
•2009.10.21-mixiアプリの公開手順 in work
•2009.10.21-mixiアプリの登録手順 in work
•2009.10.15-mixiアプリ「鉄血王女と待受騎士団」をリリース in news
•2009.10.14-mixiアプリのパズルゲームについて in work
•2009.09.14-Googleサーバー活用法[ファイル置き場] in work
•2009.09.07-雑誌ウェブデザイニングに掲載されました! in work
•2009.08.27-mixiアプリ「くままり」をリリース in news
•2009.08.26-くままるのmixiアプリ『くままり』登場 in work
•2009.05.27-ブログ向け音楽プレイヤー「DSN Player」 in news
•2009.05.27-もっとがほしいDSN in work
•2009.03.20-会津しこんがasahi.comの動画に in news
•2009.03.02-みんなが大好きjQuery in work
•2009.02.28-居酒屋“会津しこん”がasahi.comで紹介されました in work
•2009.02.27-マルチタッチディスプレイ vol.01 in work
•2009.02.20-ニールセンのユーザビリティ10原則 in work
•2009.02.11-センサー講座 Spe.001 Wiimote Whiteboard in work
•2009.02.06-センサー講座 Lec.003 Phidgetsインストール in work
•2009.02.06-エラスティックレイアウト in work
•2009.02.05-Jakob Nielsen博士 in work
•2009.01.30-固定幅レイアウト vs. リキッドレイアウト その2 in work
•2009.01.29-センサー講座 Lec.002 phidgetsの購入 in work
•2009.01.24-固定幅レイアウト vs. リキッドレイアウト その1 in work
•2009.01.20-センサー講座 Lec.001 どれを選ぶ? in work
•2009.01.17-会津しこんで取材 in work
•2008.12.22-地域SNSから生まれた居酒屋「会津しこん」 in news
 
 
"twitter"で関連する記事一覧 (シーケンスで表示する)
•2010.05.26-『日本代表に応援メッセージを送ろう!』携帯版リリース in news
•2010.05.25-おっぱいw-cup携帯版をリリースしました! in news
•2010.05.22-サッカー日本代表に応援メッセージを送ろう! in news
•2010.05.17-位置情報サービスに必要な技術まとめ in work
•2010.05.17-Message Bottleをリリースしました in news
•2010.05.13-おっぱいW-cupをリリースしました in news
•2010.05.07-TwitterSearchAPIのフィードをパースする in work
 
 
Copyright © TheDesignium inc. powered by WordPress & mootools.
Relative Keyword|lab socolab twitter