我正在编写一个需要某个类别中维基百科页面切片列表的应用程序。有些类别对此非常有效。例如,Category:English-language_films是一个归因于大约60,000页的类别。使用MediaWiki的API我可以使用list = categorymembers查询,我可以获得所有60k电影的列表。
然而,对于像NHL这样的曲棍球运动员来说,这种效果要差得多。 Category:Lists_of_National_Hockey_League_players与类别差不多,但这是一个列表页面类别。事实证明,NHL玩家的概念存储在列表中,而不是类别中。将英语电影的概念存储为一个类别。
获取实际列表相当困难,因为这些列表本身可以按字母或团队分成几个子列表。理论上可以筛选数据,但只是获取从该页面链接的维基百科页面列表是容易出错的。
是否有直接的方式来获取按列表列出的页面,包括使用API扩展子列表或从列表内容中判断链接是列表成员还是元数据的某种方式关于列表成员?
答案 0 :(得分:0)
当存在一类事物时,很可能会有一类事物。在你的情况下,Category:National Hockey League players。您可以使用categorymembers API以递归方式遍历。 (与列表不同,类别不能包含红色链接,因此根据您的用例可能存在问题。)
除此之外,维基百科API不会有太大帮助。您可以检查维基数据是否适当(例如,具有NHL.com player ID属性的数据项);这是一个不同的数据集,但有时它保持同步,并且总是很容易查询。如果这不合适,您将不得不抓取HTML。