【发布时间】: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