2010-10-28 95 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