【问题标题】:How can I get the Infobox from a Wikipedia article by the MediaWiki API? [duplicate]如何通过 MediaWiki API 从维基百科文章中获取信息框? [复制]
【发布时间】:2011-11-30 02:30:58
【问题描述】:

维基百科文章可能有信息框模板。通过以下调用,我可以获得包含信息框的文章的第一部分。

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

我想要一个只返回信息框数据的查询。这可能吗?

【问题讨论】:

标签: wikipedia-api mediawiki-api


【解决方案1】:

如果页面有右侧信息框,则使用此 URL 以 txt 格式获取。

我的示例是使用元素hydrogen。您只需将“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

【讨论】:

【解决方案2】:

garry's answer 的基础上,您可以让维基百科通过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 内容中,您可以提取(通过,例如,Beautiful Souptable,类为 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】:

    您可以像这样通过 URL 调用 Wikipedia 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

    【讨论】:

      【解决方案4】:

      不要自己解析信息框,这很复杂,看看DBPedia,它将维基百科信息框提取为数据库对象。

      【讨论】:

      • 然而,这将为您提供与特定实体的所有关系,但不会告诉您信息框中存在哪些字段
      • IIUIC 他们不通过 API 提供任何数据库,只有一些提取工具。所以你需要在本地获取所有内容。
      猜你喜欢
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 2016-07-27
      • 2012-12-07
      • 2022-01-12
      • 1970-01-01
      • 2020-02-02
      • 2016-02-25
      相关资源
      最近更新 更多