我可以获得XML或任何其他格式的维基百科文章。但对于一个术语,我想首先知道返回的文本是否包含完整的文章,或者只是包含与输入的术语一样的歧义术语。
所以"SEO"是一个模棱两可(或重定向)的术语,但如何从结果中知道这一点?而"纽约"返回完整的文章。
编辑
我的简单问题是,我有400个城市名称,我想要使用API的维基百科内容,我不想要那些不是城市文章但只包含一些重定向或其他模糊术语的页面。我想丢弃那些。
您可以使用"消歧"ppprop:进行检查
http://en.wikipedia.org/w/api.php?action=query&prop=pageprops&ppprop=消除歧义&重定向&format=xml&title=BNI
所有消歧页面都在名称恰当的类别All消歧页面中,因此您只需检查该类别即可。
作为替代方案,您可以检查是否存在消歧模板,或其变体及其重定向。
更新:消歧页面是WikiPedia(安装)的一种内容类型,而不是MediaWiki(软件)中的页面类型。因此,MediaWiki API不知道什么是消歧页面,也没有检索它们的方法。
请参阅此相关讨论。
除了我在下面布局的"经常但不总是"方法之外,您基本上必须检索页面正文,并检查是否存在消歧标记。
以下有时有效:
当我搜索SEO时,我得到:https://en.wikipedia.org/wiki/SEO
你指的是消除歧义的页面吗?喜欢https://en.wikipedia.org/wiki/SEO_%28disambiguation%29?
如果是,请检查标题是否有消歧。
例如,以下搜索:https://en.wikipedia.org/w/api.php?action=query&list=search&format=json&srsearch=SEO&srwhat=text&srlimit=2
yeilds
{
"query": {
"searchinfo": {
"totalhits": 3507
},
"search": [
{
"ns": 0,
"title": "Search engine optimization",
"snippet": "Search engine optimization (<span class='searchmatch'>SEO</span>) is the process of improving the visibility of a website or a web page in search engine s via the " <b>...</b> ",
"size": 40468,
"wordcount": 5269,
"timestamp": "2012-03-11T11:43:26Z"
},
{
"ns": 0,
"title": "SEO (disambiguation)",
"snippet": "<span class='searchmatch'>SEO</span> or search engine optimization, the process of improving ranking in search engine results. <span class='searchmatch'>SEO</span> may also refer to: <span class='searchmatch'>Seo</span> (surname), a <b>...</b> ",
"size": 955,
"wordcount": 103,
"timestamp": "2012-02-22T12:51:20Z"
}
]
},
"query-continue": {
"search": {
"sroffset": 2
}
}
}
你可以玩这个@维基百科API沙盒。