【问题标题】:getting a template data of a wiki page using api使用 api 获取 wiki 页面的模板数据
【发布时间】:2015-07-04 16:48:39
【问题描述】:

我想获取维基百科页面的模板数据。我尝试了几个 api 命令,例如 parse、query、expandtemplates 等,但无法获得我要查找的所有信息。

例如关于亚伯拉罕·林肯的页面:http://en.wikipedia.org/wiki/Abraham_Lincoln

我查询此页面存在哪些模板,如下所示: http://en.wikipedia.org/w/api.php?action=query&prop=templates&format=jsonfm&tllimit=500&titles=Abraham_Lincoln

有很多模板。特别是我对“信息框”模板感兴趣。如果我正确理解结果,则有 6 个信息框模板:

  • “模板:美国内阁信息框”
  • “模板:信息框内阁成员”
  • “模板:信息框内阁成员/行”
  • “模板:信息框职员”
  • “模板:Infobox officeholder/Office”
  • “模板:Infobox 职员/个人数据”

现在是困难的部分。如果我像这样使用“查询”API: http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=Abraham Lincoln&continue=&rvgeneratexml=

我得到了很多模板,但上面 6 个中只有 2 个 Infobox 模板。

我还尝试使用此处推荐的“expandtemplates”和 rvexpandtemplates:How to get wiki template's content?

还尝试使用此处所述的“解析”:How to get the result of a complex Wikipedia template?

所以我的问题是:如何调用 wiki api 来检索我知道存在于特定标题上的特定模板的正文? (例如如何获得亚伯拉罕林肯的“模板:信息框内阁成员”)。

如果这不可能,那么我如何获得该特定页面的所有 6 个信息框模板?

谢谢。

【问题讨论】:

  • 如果我正确理解结果,有 6 个信息框模板... - 不是。有两个信息框模板(美国内阁和公职人员);其余的是实现部分模板的各种“子程序”。一般来说,如果你解释你的目标是什么,而不是你目前认为实现目标的最佳方式,那么提供有用的答案会更容易。
  • 您是否尝试过使用 dbpedia.org?它包含 wiki 上的所有结构化内容

标签: templates mediawiki wikipedia wikipedia-api


【解决方案1】:

a] 首先获取双花括号中的模板名称:

{{Template: Name}}

b] 使用带有所有参数的“expandtemplates”API 调用:

https://en.wikipedia.org/w/api.php?action=expandtemplates&text={{Template: Name}}&prop=wikitext&title=Page Title

【讨论】:

    【解决方案2】:

    您可以使用action=parse 解析模板的内容就好像它包含在页面中一样。只需提供您要充当的页面的标题(在您的情况下是亚伯拉罕林肯),并使用 contentmodel=wikitext 传递模板的 wikitext,如下所示(实际的 wikitext 省略,原因很明显):

    https://en.wikipedia.org/w/api.php?action=parse&contentmodel=wikitext&title=Abraham Lincoln&prop=text&text=<table class="infobox ... snip
    

    【讨论】:

    • 对不起,但这并没有真正的帮助。关键是我没有该模板的信息框文本。
    • 为此,您必须自己解析内容文章 (Abraham Lincoln) 的 wikitext。 MediaWiki 中的模板只是 wikitext,因此 API 无法知道模板内部和外部的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    相关资源
    最近更新 更多