我可以用XML或任何其他格式获取维基百科文章。但是对于一个术语,我想首先知道返回的文本是否包含完整的文章,或者只是包含模糊的术语,如输入的文章。
所以“SEO”是一个含糊不清(或重定向)的术语,但如何从结果中了解这一点? 而“纽约”则返回完整的文章。
修改
我的简单问题是,我有400个城市名称,我想要使用API的维基百科内容,我不希望这些页面不是城市文章,只包含一些重定向或其他含糊不清的术语。我想丢弃那些。
答案 0 :(得分:10)
您可以查看“Disambiguation”ppprop:
答案 1 :(得分:3)
所有消除歧义的页面都在恰当命名的类别All disambiguation pages中,因此您只需检查该类别。
作为替代方案,您可以检查是否存在Disambiguation模板或one of its variants及其重定向。
答案 2 :(得分:1)
更新:消歧页面是WikiPedia(安装)的内容类型,而不是MediaWiki(软件)中的页面类型。因此,MediaWiki API不知道消歧页面是什么,也没有检索它们的方法。
除了我在下面布置的经常但不总是的方法之外,你基本上必须检索页面主体,并检查是否存在消歧标记。
以下有时有效:
当我搜索搜索引擎优化时,我得到:https://en.wikipedia.org/wiki/SEO
您指的是disambiguation pages?,如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
}
}
}