2011-10-03 71 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 
相关问题