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

Noa*_*oam 21 sql nlp wikipedia web-services wikipedia-api

我想获得一个类别及其子类别下的所有文章名称.

我知道的选项:

  1. 使用Wikipedia API.它有这样的选择吗?
  2. d/l转储.哪种格式对我的使用更好?
  3. 还有一个选项可以在Wikipedia中搜索类似的东西incategory:"music",但我没有看到在XML中查看它的选项.

请分享你的想法

Dat*_*eek 11

以下资源将帮助您从该类别及其所有子类别下载所有页面:

http://en.wikipedia.org/wiki/Wikipedia:CatScan

这里还有一个API:

https://www.mediawiki.org/wiki/API:Categorymembers

  • 这有api版本吗? (2认同)

Ade*_*era 9

您可以通过以下两种API方法执行此操作:

对于此类别的文章页面

YOUR_URL/api.php?action=query&format=json&list=categorymembers&cmtitle=Category:Music
Run Code Online (Sandbox Code Playgroud)

获取子类别:

YOUR_URL/api.php?action=query&format=json&list=categorymembers&cmtype=subcat&cmtitle=Category:Music
Run Code Online (Sandbox Code Playgroud)

您可以获得有关Mediawiki API的更多信息


Ano*_*mie 8

请注意,维基百科的分类系统不是树,甚至不是无环图。通过不断地跟踪子类别链接,您很可能最终会回到开始的地方。

如果您要进行许多此类查询,最好的方法是下载数据库转储。如果这是一个不常见的事情并且只处理小类别,那么您可能可以避免对list=categorymembers.

incategory:"music"似乎没有进行子类别搜索。

  • @Noam:无论哪个对你来说更方便,真的。请注意,您可能只需要categorylinks.sql 转储,或者该转储和page.sql 转储,具体取决于您想要执行的操作。 (2认同)