2010-10-28 134 views
11

是否可以查询维基百科API以查找包含特定模板的文章? The documentation没有描述任何将搜索结果过滤到包含模板的页面的操作。具体来说,我是在包含Template:Persondata的页面之后。之后,我希望能够检索到该特定模板,以填充openancestry.org项目的族谱数据。Wikipedia API支持是否搜索特定模板?

下面的查询显示,爱因斯坦页面包含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需要,但我希望我是错的,并且有人已经走出了一条小道沿着这条道路。

回答

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(其中不包括模板夹杂物)

+0

+1这很酷,几乎不我需要什么,但由于某种原因,结果往往是来自所有主要命名空间,但却无法满足我的需求。即使我按照文档添加blnamespace = 0,搜索也不会返回所有有用的个人数据传记所在的文章名称空间中的数据。谈话命名空间中的Persondata几乎没用。 – grenade 2010-11-08 09:20:28

+0

糟糕,显然那不包括模板包含。但是'embeddedin'查询的确如此,所以试试这个:'http://en.wikipedia.org/w/api.php?action = query&list = embeddedin&eititle = Template:Persondata&format = xml' – jpatokal 2010-11-08 23:04:51

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` 

请记住,维基百科是使用尚不搜索引擎允许我们只搜索标题,它会搜索全文。你可以利用它来获得更精确的结果。

+0

至少自2013年起用'intitle:'。 – Tgr 2016-12-28 02:14:33