templates - 使用 api 获取 wiki 页面的模板数据

标签 templates mediawiki wikipedia wikipedia-api

我想获取维基百科页面的模板数据。我尝试了多个 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 美国内阁”
  • “模板:信息箱内阁成员”
  • “模板:信息箱内阁成员/行”
  • “模板:信息箱官员”
  • “模板:信息箱官员/办公室”
  • “模板:信息箱官员/个人数据”

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

我获得了很多模板,但上述 6 个模板中只有 2 个信息框模板。

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

还尝试使用“解析”,如下所述:How to get the result of a complex Wikipedia template? .

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

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

谢谢。

最佳答案

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

{{Template: Name}}

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

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

关于templates - 使用 api 获取 wiki 页面的模板数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29875316/

相关文章:

c++ - 在 C++ 模板代码中找不到构造函数

html - Angular 2在组件继承模板中包含组件html

c++ - GDB:在头文件中的模板类函数中设置断点时出错

symfony1 - MediaWiKi 用户注册

API检索有关名人的信息

javascript - Json第一个对象是一个*,如何获取?

c++ - GCC 模板问题

php - Ascii 编码破坏了 MediaWiki 漂亮的 URL

php - MediaWiki 数据库中的访问被拒绝,甚至影响 SQL 查询

使用 SPARQL 使用 Wiki 中的数据进行 iPhone 开发