区分Wiki中的文章页面和列表/消歧页面



我使用'从维基百科生成随机页面https://en.wikipedia.org/wiki/Special:Random"并用BeautifulSoup阅读。问题是,我只想要这样的文章页面:

http://en.wikipedia.org/wiki/Ada_County,_Idaho

但有时它是一个列表页面或消歧页面(我不想要)。例如:http://en.wikipedia.org/wiki/List_of_U.S._counties_named_after_personal_first_names

有没有一种简单的方法来区分这些情况?

使用API判断页面是否消除歧义。例如,这将在文章名称空间中检索10个随机标题(在沙箱中交互尝试)。消歧页面的属性中将包含"pageprops":{"disambiguation":""}。不幸的是,列表没有这么简单的方法,你必须从它们的标题(/^List of .*/)或类别中猜测。

列表页面(大多数情况下)可以通过查询WikiData来区分P31(的实例)的值。列表页面的值为Q13406463(维基媒体列表页面)。

https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q678323

如果您使用这种方法,您可以同时检查消歧页面。这些将具有值Q4167410(维基媒体消歧页面)。

有许多Python库用于与MediaWiki API交互,例如wikitools:

listOfTitles = 'Ada_County,_Idaho|List_of_U.S._counties_named_after_personal_first_names'
site = wikitools.Wiki("http://www.wikidata.org/w/api.php", user, password)
site.login(user,password)
params = {'action':'wbgetentities', 'props':'claims','titles':listOfTitles,'format':'json'}
request = wikitools.APIRequest(site, params)
result = request.query()

最新更新