2011-11-16 34 views
2

目前,我試圖將給定維基百科頁面的內容檢索到純文本文件。使用XPath,我有完美的代碼。但是,只有一個簡單的問題:維基百科上的一些頁面是消歧頁面。區分維基百科對普通頁面的歧義

現在,這本身並不具有戲劇性。我編寫了一個XPath表達式來檢索維基百科消歧頁面的第一個鏈接:(/html/body/div[@id='content']/div[@id='bodyContent']//a[starts-with(@href, '/wiki')]/@href)[1]。這意味着我可以使用第一個鏈接作爲我嘗試從中檢索內容的頁面。

沒有,真正的問題是,我還沒有找到任何辦法知道使用該代碼(一個從消歧頁面獲取第一條鏈接)或其他的代碼(就是那個直接從有趣的頁面獲取內容,非歧義性的頁面)。事實上,我似乎無法找到區分歧義頁面與正常頁面的方法。

到目前爲止,我已經試過:

看着消歧頁面的源代碼,並將其與正常的相比:我無法找到一個差異。

查看兩種類型網頁上的內容:這裏唯一的區別是一些頁面在頂部顯示'此頁面可能引用'。但是,並非所有頁面都提到這一點。

一個簡單的解決方案是查看頁面的標題(例如,http://en.wikipedia.org/wiki/Boston_(disambiguation))。但是,並非所有消歧義頁面的標題中都包含「消歧」一詞:http://en.wikipedia.org/wiki/Freedom

因此,總而言之,沒有人知道用維基百科頁面與實際內容區分維基百科消歧頁面的方法嗎?

編輯:這實際上不是相關的問題,但我在Objective-C編程。

回答

0

區分消歧頁面和實際文章的正確方法是,所有消歧頁面都是隱藏類別Category:All disambiguation pages的成員。

但解析實際的HTML可能不是一個好主意。您應該改用the API。使用它,您可以檢查某個類別的成員資格或獲取文章文本。許多語言已經有與API通信庫,但我還沒有找到一個客觀C.

+0

完美,正是我需要的。如果任何人需要維基百科API鏈接,請訪問http://en.wikipedia.org/w/api.php?action=query&titles=Freedom&prop=categories&clcategories=Category:All%20disambiguation%20pages – elliottbolzan

+0

不再使用Disambiguator擴展名 – Nemo