我想获取维基百科页面的模板数据。我已经尝试了几个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个信息框模板:
现在来了困难的部分。如果我使用'查询'像这样的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个信息框模板?
感谢。
答案 0 :(得分:1)
a] 首先获取双大括号中的模板名称:
{{Template: Name}}
b] 使用带有所有参数的“expandtemplates”API 调用:
https://en.wikipedia.org/w/api.php?action=expandtemplates&text={{Template: Name}}&prop=wikitext&title=Page Title
答案 1 :(得分:0)
您可以使用action=parse
解析模板的内容,就好像它包含在页面中一样。只需提供您想要充当的页面标题(在您的情况下是Abraham Lincoln),并使用contentmodel=wikitext
传递模板的wikitext,就像这样(由于显而易见的原因,省略了实际的wiki文本):
https://en.wikipedia.org/w/api.php?action=parse&contentmodel=wikitext&title=Abraham Lincoln&prop=text&text=<table class="infobox ... snip