3

目前,我正在尝试将给定维基百科页面的内容检索到纯文本文件。使用 XPath,我的代码可以完美地做到这一点。然而,只有一个简单的问题:维基百科上的某些页面是消歧页面。

现在,这本身并不戏剧化。我编写了一个 XPath 表达式,用于检索 Wikipedia 消歧页面的第一个链接:(/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 编程。

4

2 回答 2

2

现在可以直接从 API 中获取,而不是依赖于类别,使用?action=query&prop=pageprops

示例:http ://en.wikipedia.org/w/api.php?action=query&prop=pageprops&format=json&titles=Ekeby将返回:

{"query":{"pages":{"24789600":{"pageid":24789600,"ns":0,"title":"Ekeby","pageprops":{"disambiguation":"","wikibase_item":"Q410694"}}}}}

于 2014-07-19T13:03:08.027 回答
0

区分消歧页面与实际文章的正确方法是,所有消歧页面都是隐藏类别Category:All disambiguation pages的成员。

但是解析实际的 HTML 可能不是一个好主意。您应该改用API。使用它,您可以检查某个类别的成员资格或获取文章文本。许多语言已经有与 API 通信的库,但我还没有找到一个用于目标 C 的库。

于 2011-11-16T22:12:19.717 回答