スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Wikipedia API (mediawiki)

WikipediaのAPIをつかってあれこれしていますが、なんかすごく難しい。
ちょっとまとめてみます。

公式:
http://www.mediawiki.org/wiki/API:Main_page

■目的
テキストでクエリを投げてレスから必要な情報をとりだす

■実装
今回Ajaxまわりは割愛します。WikipediaのAPIはこんな感じなんだなという紹介ができればと思います。
まず、下記を御覧ください。

http://ja.wikipedia.org/wiki/IPhone_6

これはWikipediaでiPhone 6を検索した結果。ここでの検索ワードは「iphone6」です(すべて小文字、スペース無し)
当然ながらiPhone 6の情報がでています。この情報をAPIを通して取ってくるにはどうすればいいのか?

http://ja.wikipedia.org/w/api.php?action=query&titles=iphone6&format=json&prop=revisions&rvprop=content

こんな感じでできます。
ポイントは先頭のja、これで日本語のwikipediaを指定します。あとは、title=のあとにキーワードを入れるだけ。
なのですが、上記のURLにとんでもらうとわかるように情報がはいっていません。
先ほどのwikipedia本体のページではiPhone6の情報が閲覧できたのになぜ。。
実はここがこのAPIの扱いの難しいところで、iphone6ではだめ、iPhone 6ならヒットするという構造なのです。
それでも「もしかしてiPhone 6のことですか?」てきな内容がレスに含まれていればいいのですがそういう情報もなく、
代わりに{"normalized":[{"from":"iphone6","to":"Iphone6"}]
という記述が。そこで今度はIphone6でアクセスしてみると、、

http://ja.wikipedia.org/w/api.php?action=query&titles=Iphone6&format=json&prop=revisions&rvprop=content

うーむ。結局なんだったんだろうという結果に。
Wikipediaのサイトではiphone6で調べてもIphone6で調べてもおそらく何らかの方法でリダイレクトをかけているのでしょうが、その方法がこれらのAPIからはわからない。

加えて、構文を解析していくとかなりグチャグチャなことがわかります。
例えば添付されている写真を「画像」と言ったり「image」と言ったり「thumbnail」と言ったり、APIからの情報をもとにサイトをつくろうとするとシステム化が非常に煩雑になります。
すなわち

if(res === "画像" || res === "image" || res === "thumbnail") then xxx

みたいな処理がやたらと増えて、網羅できているかすらわからないという状態です。
うーむ。なにかいい方法はないのかな。
幾つか公開された解析ツールはあるのですが、自分で作れないと意味無いですからね。。

コメント

コメントの投稿

非公開コメント

PR

PR

プロフィール

何でも書くman

Author:何でも書くman
思ったことや備忘録など、とりあえずなんでも書きます。IT系のことや趣味、生活に関わることなども。

ページの先頭へ戻る
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。