是否可以在Wikipedia API中查询包含特定模板的文章? The documentation未描述将搜索结果过滤到包含模板的网页的任何操作。具体来说,我在包含Template:Persondata
的页面之后。之后,我希望能够只检索该特定模板,以便填充openancestry.org项目的族谱数据。
下面的查询显示Albert Einstein页面包含Persondata模板,但它不返回模板的内容,我不知道如何获取包含模板的页面标题列表。 http://en.wikipedia.org/w/api.php?action=query&prop=templates&titles=Albert%20Einstein&tlcontinue=736|10|ParmPart
返回:
<api>
<query>
<pages>
<page pageid="736" ns="0" title="Albert Einstein">
<templates>
...
<tl ns="10" title="Template:Persondata"/>
...
</templates>
</page>
</pages>
</query>
<query-continue>
<templates tlcontinue="736|10|Reflist"/>
</query-continue>
</api>
我怀疑我无法从API获得我需要的东西,但是我希望我错了,并且有人已经在这条道路上开辟了道路。
答案 0 :(得分:7)
您可以使用embeddedin
查询查找包含该模板的所有网页:
curl 'http://en.wikipedia.org/w/api.php?action=query&list=embeddedin&eititle=Template:Persondata&eilimit=5&format=xml'
哪个可以帮到你:
<?xml version="1.0"?>
<api>
<query>
<embeddedin>
<ei pageid="307" ns="0" title="Abraham Lincoln" />
<ei pageid="308" ns="0" title="Aristotle" />
<ei pageid="339" ns="0" title="Ayn Rand" />
<ei pageid="340" ns="0" title="Alain Connes" />
<ei pageid="344" ns="0" title="Allan Dwan" />
</embeddedin>
</query>
<query-continue>
<embeddedin eicontinue="10|Persondata|595" />
</query-continue>
</api>
请参阅mediawiki.org上的full docs。
修改使用embeddedin
查询代替backlinks
(不包含模板内容)
答案 1 :(得分:3)
使用embeddedin
不允许您搜索特定人员,搜索字符串将变为Template:Persondata
。
我发现仅从维基百科获取人员的最佳方式是使用list=search
并使用AND"Born"AND"Occupation"
过滤搜索:
http://en.wikipedia.org/w/api.php?action=query&list=search&srsearch="Tom Cruise"AND"Born"AND"Occupation"&format=jsonfm&srprop=snippet&srlimit=50`
请记住,维基百科正在使用的搜索引擎尚不允许我们只搜索标题,它会搜索全文。您可以利用它来获得更精确的结果。
答案 2 :(得分:0)
接受的答案解释了如何使用特定模板列出页面,但如果您需要使用模板搜索页面,则可以使用hastemplate:
搜索关键字:{{3 }}