如何获取维基百科类别及其子类别下的所有文章页面?

29

我想获取某个类别及其子类别下的所有文章名称。

我知道的选项:

  1. 使用维基百科API。它是否有这样的选项?
  2. 下载维基百科备份。哪种格式更适合我的使用?
  3. 还可以在维基百科中搜索类似于incategory:“music”的内容,但我没有看到以XML格式查看的选项。

请分享您的想法。

3个回答

16

2
这个有 API 版本吗? - Vishnu Ks

12

您可以通过以下两种API方法来实现:

针对此类别的文章页面

YOUR_URL/api.php?action=query&format=json&list=categorymembers&cmtitle=Category:Music

获取子类别:

YOUR_URL/api.php?action=query&format=json&list=categorymembers&cmtype=subcat&cmtitle=Category:Music

您可以在Mediawiki API上获取更多信息。


8
请注意,维基百科的分类系统不是树形结构,甚至不是无环图。通过不断跟随子类别链接,最终可能会回到起点。
如果您将进行许多此类查询,则最好下载数据库转储。如果这将是一件不经常发生的事情,并且只涉及小分类,则可以通过反复查询list=categorymembers来完成。 incategory:"music" 似乎不进行子类别搜索。

你会推荐我为了我的目的下载XML还是SQL吗? - Noam
2
@Noam:无论哪种方式对您更方便。请注意,根据您要做的事情,您可能只需要categorylinks.sql转储,或者还需要page.sql转储。 - Anomie
@Anomie,您是否有任何证据(或示例)证明维基百科分类不是无环的? - Peter Franek
1
虽然它们可能已经被修复,但 https://en.wikipedia.org/wiki/Wikipedia:Dump_reports/Category_cycles 列出了100个例子,这些例子大约在2016年6月左右存在。 - Anomie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接