Wikipedia API(検索&パース)のサンプル
4月 1st, 2009
Wikipedia API(検索&パース)を先日公開したけど、やはり具体的な利用例がないと使い方がわからないだろう。
そこで、PHPによる簡単な利用サンプルを作成した。
PHP 5.0以降には、XMLを簡単に取り扱える「SimpleXML」という、非常に優れた仕組みがある。
ファイル、もしくはURLからXML文書を読み込んで、PHPのオブジェクトに変換してくれる。
一度、変換してしまえば、オブジェクトや配列を扱うのと変わらない感覚と手順で操作できる優れものだ。(参考:PHPでのSimpleXMl処理)
これを使えば、数行から数十行でXMLの処理が書けてしまう。
以下が、今回のサンプルの画面。
検索結果リストの処理。

詳細ページの処理

【解説】
(1) 検索結果XML処理の実際
Wikipedia検索&パースAPIで、検索を行うと、以下のように検索結果一覧のXMLが返ってくる。
<?xml version="1.0" encoding="utf-8"?>
<wikipedia>
<items>
<item>
<title>水樹奈々</title>
<link>http://localhost/~tomoyun/wpsearch/index.php?id=45275&title=%E6%B0%B4%E6%A8%B9%E5%A5%88%E3%80%85&type=xml</link>
<fullsize>http://localhost/~tomoyun/wpsearch/index.php?id=45275&title=%E6%B0%B4%E6%A8%B9%E5%A5%88%E3%80%85&type=xml&size=full</fullsize>
</item>
<item>
<title>水樹奈々_スマイル・ギャング</title>
<link>http://localhost/~tomoyun/wpsearch/index.php?id=399281&title=%E6%B0%B4%E6%A8%B9%E5%A5%88%E3%80%85_%E3%82%B9%E3%83%9E%E3%82%A4%E3%83%AB%E3%83%BB%E3%82%AE%E3%83%A3%E3%83%B3%E3%82%B0&type=xml</link>
<fullsize>http://localhost/~tomoyun/wpsearch/index.php?id=399281&title=%E6%B0%B4%E6%A8%B9%E5%A5%88%E3%80%85_%E3%82%B9%E3%83%9E%E3%82%A4%E3%83%AB%E3%83%BB%E3%82%AE%E3%83%A3%E3%83%B3%E3%82%B0&type=xml&size=full</fullsize>
</item>
<item>
<title>水樹奈々の楽曲</title>
<link>http://localhost/~tomoyun/wpsearch/index.php?id=1575110&title=%E6%B0%B4%E6%A8%B9%E5%A5%88%E3%80%85%E3%81%AE%E6%A5%BD%E6%9B%B2&type=xml</link>
<fullsize>http://localhost/~tomoyun/wpsearch/index.php?id=1575110&title=%E6%B0%B4%E6%A8%B9%E5%A5%88%E3%80%85%E3%81%AE%E6%A5%BD%E6%9B%B2&type=xml&size=full</fullsize>
</item>
<item>
<title>水樹奈々のアルバム</title>
<link>http://localhost/~tomoyun/wpsearch/index.php?id=1575128&title=%E6%B0%B4%E6%A8%B9%E5%A5%88%E3%80%85%E3%81%AE%E3%82%A2%E3%83%AB%E3%83%90%E3%83%A0&type=xml</link>
<fullsize>http://localhost/~tomoyun/wpsearch/index.php?id=1575128&title=%E6%B0%B4%E6%A8%B9%E5%A5%88%E3%80%85%E3%81%AE%E3%82%A2%E3%83%AB%E3%83%90%E3%83%A0&type=xml&size=full</fullsize>
</item>
</items>
</wikipedia>
これをPHPのSimpleXMLで処理するには、以下のようにする(変数$urlには、Wikipdia検索&パースAPIのURLと検索パラメータが入っていると仮定する)。
$xml = simplexml_load_file($url);
foreach($xml->items->item as $item) {
$title = $item->title;
$link = $item->link;
}
これで取得できた「$link」が、詳細ページのURLだ。
(2) 詳細ページXML処理の実際
上記の(1)で取得したリンクの詳細ページにアクセスすると、下記のようなXMLが返ってくる。
<?xml version="1.0" encoding="utf-8"?>
<wikipedia>
<infos>
<info>
<title>声優</title>
<data>
<ふりがな>みずき なな</ふりがな>
<名前>水樹 奈々</名前>
<本名>近藤 奈々
(こんどう なな)</本名>
<愛称>奈々ちゃん</愛称>
<出生地>日本・愛媛県新居浜市</出生地>
<血液型>O型</血液型>
<生年>1980</生年>
<生月>1</生月>
<生日>21</生日>
<所属>シグマ・セブン</所属>
<活動時期>1998年 -</活動時期>
<デビュー作>門倉千紗都(NOëL 〜La neige〜)</デビュー作>
</data>
</info>
</infos>
<lead>水樹 奈々(みずき なな、1980年1月21日 - )は、愛媛県新居浜市出身の女性声優、歌手。</lead>
</wikipedia>
これを処理するPHPのコードは以下の通り。
$xml = simplexml_load_file($url);
$lead = $xml->lead;
echo $lead."\n"; // リード文
foreach($xml->infos->info as $info) {
foreach($info->data->children() as $name=>$value) {
echo $name."\n"; //要素(タグ)名
echo $value."\n"; //要素値
}
}
サンプルプログラムのソースは、「Wikipedia検索&パースAPI」のver.1.1以降のアーカイブに含まれている。
Wikipedia検索&パースAPIのページからダウンロードしてください。
Wikipedia検索&パースAPIページ
Wikipedia検索&パースAPI利用サンプルページ









非常に参考になりました。
ありがとうございます。
HIRAさん
ご丁寧にありがとうございます。
なにか作例ができたら、教えてください。
こちらのブログなどで、紹介させていただきます。