维基百科文章可能有Infobox模板。通过以下调用,我可以获得包含Infobox的文章的第一部分。
http://en.wikipedia.org/w/api.php?action=parse&pageid=568801§ion=0&prop=wikitext
我想要的是一个只返回Infobox数据的查询。这可能吗?
答案 0 :(得分:26)
您可以使用对此维基百科API的网址调用来执行此操作:
http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xmlfm&titles=Scary%20Monsters%20and%20Nice%20Sprites&rvsection=0
如果您想要json格式的文章,请将titles=
部分替换为您的网页标题,将format=xmlfm
替换为format=json
。
答案 1 :(得分:12)
不要自己解析信息框,这很复杂,请查看DBPedia,其中维基百科信息框被提取为数据库对象。
答案 2 :(得分:2)
在@ 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
请注意,这两种方法都不会返回 信息框。但是从html内容中,您可以使用类table
提取(通过例如beautifulsoup)infobox
。
在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
答案 3 :(得分:0)
如果页面有右侧信息框,则使用此URL以txt格式获取。 我的例子是使用氢元素。您需要做的就是更换" Hydrogen"与你的头衔。
https://en.wikipedia.org/w/index.php?action=raw&title=Template:Infobox%20hydrogen
如果您正在寻找使用此URL的JSON格式,但它并不漂亮。
https://en.wikipedia.org/w/api.php?action=parse&page=Template:Infobox%20hydrogen&format=json