ウィキペディアの記事には、Infoboxテンプレートが含まれている場合があります。次の呼び出しにより、Infoboxを含む記事の最初のセクションを取得できます。
http://en.wikipedia.org/w/api.php?action=parse&pageid=568801§ion=0&prop=wikitext
必要なのは、Infoboxデータのみを返すクエリです。これは可能ですか?
これは、次のようにWikipedia APIへのURL呼び出しで実行できます。
http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xmlfm&titles=Scary%20Monsters%20and%20Nice%20Sprites&rvsection=0
titles=
セクションとページタイトル、およびformat=xmlfm
からformat=json
json形式の記事が必要な場合。
非常に複雑な情報ボックスを自分で解析する代わりに、データベースオブジェクトとしてWikipediaの情報ボックスが抽出された DBPedia を見てください。
@garryの答えに基づいて、次のようにrvparse
パラメータを介して、ウィキペディアに情報ボックスをhtmlに解析させることができます。
http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=Scary%20Monsters%20and%20Nice%20Sprites&rvsection=0&rvparse
どちらのメソッドもjust情報ボックスを返さないことに注意してください。ただし、htmlコンテンツから、table
をクラスinfobox
で(beautifulsoupなどを介して)抽出できます。
Python
では、次のようなことをします
resp = requests.get(url).json()
page_one = next(iter(resp['query']['pages'].values()))
revisions = page_one.get('revisions', [])
html = next(iter(revisions[0].values()))
# now parse the html
ページに右側の情報ボックスがある場合は、このURLを使用してテキスト形式で取得します。私の例では、要素Hydrogenを使用しています。あなたがする必要があるすべてはあなたのタイトルで「水素」を取り替えることです。
https://en.wikipedia.org/w/index.php?action=raw&title=Template:Infobox%20hydrogen
JSON形式を探している場合は、このURLを使用してください。
https://en.wikipedia.org/w/api.php?action=parse&page=Template:Infobox%20hydrogen&format=json