如何使用 pywikibot 在维基百科上查找子类别和子页面?

How to find subcategories and subpages on wikipedia using pywikibot?

我想获取本网站““男性名字”类别中的页面”部分中的所有 (87) 个子类别和所有页面 (200): https://en.wikipedia.org/wiki/Category:Masculine_given_names

我用下面的代码试了一下:

import pywikibot
site = pywikibot.Site("en", "wikipedia")
page = pywikibot.Page(site, 'Category:Masculine_given_names')
print(list(page.categories()))

但是这样一来,我只能在页面的最底部获得类别。 我怎样才能获得本网站的子类别和(子)页面?

如何获取给定类别的子类别和(子)页面?

首先你必须使用 Category class 而不是 Page class。你必须创建它非常相似:

  >>> import pywikibot
  >>> site = pywikibot.Site("en", "wikipedia")
  >>> cat = pywikibot.Category(site, 'Masculine_given_names')

类别 class 有其他方法,请参阅 documentation 了解更多信息和可用参数。 categoryinfo 属性 例如给出了关于类别内容的简短概述:

  >>> cat.categoryinfo
  {'size': 1425, 'pages': 1336, 'files': 0, 'subcats': 89}

该分类共有1425个条目,本案例共有1336页,89个子分类。

要获取所有 子类别 使用 subcategories() 方法:

  >>> gen = cat.subcategories()

注意,这是一个生成器。如下所示,您将获得上面 categoryinfo 中的所有内容:

  >>> len(list(gen))
  89

要获取所有 页数 (文章),您必须使用 articles() 方法,例如

  >>> gen = cat.subcategories()

猜猜对应的列表有多少条目。

最后有一种方法可以获取该类别的所有 成员 ,其中包括名为 members():

的页面、文件和子类别
  >>> gen = cat.members()