SimpleAPIだと検索でヒットしないことがあったので、参考サイトを読んで試してみた。
最初、リクエストURL(http://ja.wikipedia.org/w/api.php?action=query&titles=xxxxx&prop=revisions&rvprop=content&redirects=1&format=xml)を作って、simpelxml_load_fileで取得しようとしたけど失敗するので、Zend Framework(Zend_Rest_Client)を使った。
得られたコンテンツはWikitextフォーマットで、HTMLへの変換にはPEAR::Text_Wikiが便利とあったので、PEAR::Text_WikiとPEAR::Text_Wiki_Mediawikiを使うと見やすくなった。
確認ページ:hello_mediawiki_api.php
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>MediaWiki API test</title> </head> <body> <h1>MediaWiki API test</h1> <form method="GET" action=""> <input type="text" name="keyword" size="40" value="" /> <input type="submit" value="検索" /> </form> <br> <?php if (isset($_GET['keyword'])) { require_once('Zend/Loader.php'); Zend_Loader::loadClass('Zend_Rest_Client'); require_once('Text/Wiki.php'); $wiki = &Text_Wiki::factory('Mediawiki'); $wiki->setRenderConf('xhtml', 'wikilink', 'view_url', 'http://ja.wikipedia.org/wiki/'); $wiki->setRenderConf('xhtml', 'wikilink', 'pages', false); // 文字化け対策 $wiki->setFormatConf('Xhtml', 'translate', HTML_SPECIALCHARS); try { $wikipedia = new Zend_Rest_Client('http://ja.wikipedia.org/w/api.php'); $wikipedia->action('query'); $wikipedia->prop('revisions'); $wikipedia->rvprop('content'); $wikipedia->format('xml'); $wikipedia->redirects('1'); $wikipedia->titles($_GET['keyword']); $result = $wikipedia->get(); $content = $result->query->pages->page->revisions->rev; echo $wiki->transform($content, 'Xhtml'); } catch (Exception $e) { die('ERROR: ' . $e->getMessage()); } } ?> </body> </html>
参考サイト
- PHP と MediaWiki API を使ってウィキペディアの情報に接続する
- PEAR::Text_Wikiを使ったヘルパー – ぬかるむ日々
- API:Main page/ja – MediaWiki
関連エントリー