2013-01-22 50 views
-2

我正在使用HTML和JavaScript編寫an "auto-wikifier" tool。對於需要修飾的文本中的每個單詞,我需要獲取一個包含該單詞的頁面列表(以便發現文本中的匹配短語可以自動識別)。有沒有一種方法可以使用維基百科的API或Web服務之一獲取包含特定單詞的所有維基百科頁面的列表?獲取維基百科上包含特定單詞的所有頁面標題

function getMatchingPageTitles(theString){ 
    //get a list of all matching page titles for a specific string, using one of Wikipedia's APIs or web services 
} 
+0

維基百科或MediaWiki?這有很大的不同。即。 wikipedia.org或MediaWiki的一些自定義安裝。 – Halcyon

+0

@FritsvanCampen我只關心從中獲取頁面標題。 –

+0

有像4M +維基百科的文章;我不相信瀏覽器不會崩潰。 –

回答

6

FirstI'mnotsureIunderstandhowwouldsomethinglikethatbeuseful。 (維基百科有關於所有常見詞語的文章,我不認爲與它們的鏈接可能有任何用處。)

但是,如果你真的想做這樣的事情,我認爲更好的方法是使用the API找出您的輸入文字中有哪些文字有文章。

例如,對於字符串I am writing an "auto-wikifier" tool,您的查詢可能類似於:

http://en.wikipedia.org/w/api.php?format=xml&action=query&titles=I|am|writing|an|auto-wikifier|tool

答案是:

<api> 
    <query> 
    <normalized> 
     <n from="am" to="Am" /> 
     <n from="writing" to="Writing" /> 
     <n from="an" to="An" /> 
     <n from="auto-wikifier" to="Auto-wikifier" /> 
     <n from="tool" to="Tool" /> 
    </normalized> 
    <pages> 
     <page ns="0" title="Auto-wikifier" missing="" /> 
     <page pageid="2513432" ns="0" title="Am" /> 
     <page pageid="2513422" ns="0" title="An" /> 
     <page pageid="25346998" ns="0" title="I" /> 
     <page pageid="30677" ns="0" title="Tool" /> 
     <page pageid="32977" ns="0" title="Writing" /> 
    </pages> 
    </query> 
</api> 

幾點注意事項:

  • 的結果不符合您指定的順序。
  • 如果一個頁面不存在,結果有missing=""屬性。
  • JSON和JSONP格式也可用,這可能更適合JavaScript。
  • titles參數每個查詢限制爲50個。
+3

+1的解決方案,不涉及用一堆毫無意義的流量轟炸非盈利網站。 –

+0

有沒有辦法找到標題中包含某個單詞的所有頁面(而不是該單詞的完全匹配)? –

+1

你可以嘗試類似https://en.wikipedia.org/w/api.php?format=xml&action=query&list=search&srsearch=intitle:tool&srprop=&srlimit=max,但這將意味着每個單詞的一個查詢。 – svick

1

API:Allpages是一個有趣的開始。遺憾的是,it is limited to 500 queries

+0

是否可以搜索整個詞的匹配? (我注意到[這個查詢](http://en.wikipedia.org/w/api.php?action=query&list=allpages&apfrom=Kre&aplimit=500)顯示所有包含'Kre'的頁面,而不僅僅是'Kre'一個單詞。是否有可能僅顯示整個單詞的結果?) –

+0

我認爲你的麻煩實際上是在一個PHP查詢中在Kre周圍添加空格。 – Hugolpz

+0

注意:我也只是開始挖掘mediawiki API。我想這是一個普遍的政策,限制查詢500,所以我會走向dbpedia和sparql查詢。 – Hugolpz

相關問題