2011-10-03 76 views
20

維基百科文章可能有Infobox模板。通過以下電話,我可以得到包含Infobox的文章的第一部分。如何從Mediawiki API的維基百科文章中獲取信息框?

http://en.wikipedia.org/w/api.php?action=parse&pageid=568801&section=0&prop=wikitext 

我想要的是一個將只返回Infobox數據的查詢。這可能嗎?

+1

[獲取維基百科的信息框部分]的可能的複製(http://stackoverflow.com/questions/3312346/getting-the-infobox-section-of-wikipedia) – Nemo

+0

參見[如何提取來自維基百科信息框的信息?](https://stackoverflow.com/questions/33862336/how-to-extract-information-from-a-wikipedia-infobox)瞭解更詳細的答案。 – Tgr

回答

7

而不是自己解析信息框,這很複雜,看看DBPedia,它有維基百科信息框作爲數據庫對象提取出來。

+0

精彩提示!謝謝!不要通過自己解析wikimedia api來重新發明輪子。 – ArisRe82

+1

然而,這會給你一個特定實體的所有關係,但不會告訴你信息框中存在哪些字段 – MFARID

23

您可以通過URL調用API維基百科這樣做:

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=xmlfmformat=json如果你想在JSON格式的文章。對@加里的回答

2

大廈,你可以有維基百科通過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 

注意,無論是方法將返回只是的信息框。但是從html內容中,您可以提取tableinfobox類(通過,例如,美麗)。

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 
相關問題