2011-11-16 32 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