2010-10-28 15 views
11

Belirli bir şablon içeren makaleler için Wikipedia API'sı sorgulamak mümkün mü? The documentation, arama sonuçlarını bir şablon içeren sayfalara filtreleyen hiçbir eylemi açıklamamaktadır. Özellikle, ben Template:Persondata içeren sayfaların peşindeyim. Bundan sonra, openancestry.org projesinin şecere verilerini doldurmak için sadece o belirli şablonu alabilmeyi umuyordum.Wikipedia API desteği belirli bir şablonu arar mı?

Aşağıdaki sorgu, Albert Einstein sayfasının Persondata Şablonunu içerdiğini, ancak şablonun içeriğini döndürmediğini ve şablon içeren sayfa başlıklarının listesini nasıl alacağımı bilmediğimi gösterir. http://en.wikipedia.org/w/api.php?action=query&prop=templates&titles=Albert%20Einstein&tlcontinue=736|10|ParmPart

İade:

<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> 

Ben API ne gerek alamayan şüpheli ama ben yanılıyorum ve umut ediyorum birisi bu yolda bir çeşit deneme zaten ettiğini .

cevap

7

Sen şablonu içeren tüm sayfaları bulmak için embeddedin sorgu kullanabilirsiniz: alır

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 de full docs bakınız.

Düzenleme Kullanım embeddedin sorgu yerine backlinks (şablon kapanım kapsamaz olan)

+0

1 neredeyse serin ve yapar Neye ihtiyacım var ama nedense sonuçların hepsinden olma eğilimindeyim. Dokümanlara göre blnamespace = 0 eklesem bile, arama, tüm yararlı personel verilerinin biyografilerinin yer aldığı makaleler ad alanından veri döndürmez. Konuşma ad alanındaki persondata oldukça işe yaramaz. – grenade

+0

Oops, görünüşe göre bu şablon kapanımları kapsamaz. Ama 'gömülü' sorgu yapar, bu yüzden bunu deneyin: 'http: //en.wikipedia.org/w/api.php? Action = sorgu & list = embeddedin & eititle = Şablon: Persondata & format = xml' – jpatokal

3

Belirli bir kişiyle aramak için izin vermez embeddedin kullanarak, arama dizesi Template:Persondata olur.

http://en.wikipedia.org/w/api.php?action=query&list=search&srsearch="Tom Cruise"AND"Born"AND"Occupation"&format=jsonfm&srprop=snippet&srlimit=50` 

Vikipedi henüz yok bir arama motoru kullanarak unutmayın:

Ben Wikipedia'dan sadece insanları tespit ettik iyi yolu AND"Born"AND"Occupation" kullanılarak list=search kullanmak ve arama filtre etmektir sadece başlığı aramamıza izin verin, tam metni arayacaktır. Daha kesin sonuçlar almak için bundan faydalanabilirsiniz.

+0

Başlıkta arama yapmak mümkün olmuştur en azından 2013'ten beri “intitle:” ile. – Tgr