维基百科API:如何为所有具有相同名称的人获取所有页面ID?

时间:2014-04-17 00:09:43

标签: wiki wikipedia wikipedia-api mediawiki-api

我看到一些同名的人。

如Rico Rodriguez

http://en.wikipedia.org/wiki/Rico_Rodriguez

显示有2人(pageIDs)

但是通过使用这个api,我只能获得一个pageID

http://en.wikipedia.org/w/api.php?action=query&titles=Rico_Rodriguez&format=json

我怎样才能得到所有这两个人? pageIDs?

2 个答案:

答案 0 :(得分:4)

正如leo所提到的,在维基百科上,你必须分析消歧页面。但是,wikidata.org现在正在收集有关维基百科上描述的内容的数据集。维基数据具有“标签”和“别名”的概念,对于多个页面可以是相同的,并且每种语言都是不同的。这是一个查询,您可以使用它查找“Rico Rodriguez”的所有维基数据条目:

https://www.wikidata.org/w/api.php?action=wbsearchentities&search=Rico%20Rodriguez&language=en

然后,您可以要求每个“数据项”的“附加链接”:

https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q552090|Q954614&props=aliases|sitelinks&languages=en

这将为您提供每个维基百科语言版本的相应页面标题。然后,您可以转到相应的Wiki的API并询问页面ID。

答案 1 :(得分:0)

所有MediaWiki页面标题都是唯一的,并且编辑人员手动处理歧义,因此无法确定是否有多个具有相同名称的人员。但是,您可以检查该页面是否为消歧页面,如示例所示:

https://en.wikipedia.org/w/api.php?action=query&titles=Rico_Rodriguez&prop=pageprops

disambiguation下返回pageprops

要将页面链接起来,您必须解析wiki代码。消歧链接看起来可能是真的,所以没有简单的方法可以捕获它们,但只要你在一个单一的语言版本中工作,语法就有可能或多或少地保持一致。在英语维基百科中,usually be Rico Rodriguez (musician)Kimberley, British Columbia

但是,消歧页面可能非常复杂。例如:https://en.wikipedia.org/wiki/Joker