我看到一些同名的人。维基百科API:如何获取所有具有相同名称的人的所有页面ID?
如波多黎各罗德里格斯
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
哪有我得到了这两个人的所有pageID?
我看到一些同名的人。维基百科API:如何获取所有具有相同名称的人的所有页面ID?
如波多黎各罗德里格斯
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
哪有我得到了这两个人的所有pageID?
所有的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
正如利奥所说,维基百科上,你将不得不分析消歧页面。但是,wikidata.org现在正在收集有关维基百科上描述的事情的数据集。 Wikidata具有“标签”和“别名”的概念,对于多个页面可以是相同的,并且每种语言都是defiend。下面是一个查询,你可以用它来找到所有维基数据条目“里科·罗德里格斯”:
https://www.wikidata.org/w/api.php?action=wbsearchentities&search=Rico%20Rodriguez&language=en
然后,您可以要求每个那些“数据项”中的“网站链接”:
这将为您提供每个维基百科语言版本的相应页面标题。然后,您可以转到各自的wiki的API并请求页面ID。
您也可以使用API列出消歧义页面上的所有链接。 – svick