我想获取维基百科页面的模板数据。我尝试了多个 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/