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

问题描述 投票:0回答:1

我想获取此网站上“类别“男性名字”中的页面”部分中的所有(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()))

但这样我只能得到页面最底部的类别。 我如何获取此网站上的子类别和(子)页面?

python mediawiki wikipedia wikipedia-api pywikibot
1个回答
2
投票

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

首先你必须使用

Category
类而不是
Page
类。您必须创建非常相似的它:

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

类别类具有其他方法,请参阅文档以获取更多信息和可用参数。例如,

categoryinfo
属性给出了有关类别内容的简短概述:

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

该类别有 1425 个条目,本例中有 1336 个页面和 89 个子类别。

要获取所有子类别,请使用

subcategories()
方法:

  >>> gen = cat.subcategories()

注意,这是一个发电机。如下所示,您将获得上面

categoryinfo
中找到的所有内容:

  >>> len(list(gen))
  89

要获取所有pages(文章),您必须使用

articles()
方法,例如

  >>> gen = cat.articles()

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

最后有一个方法可以获取该类别的所有成员,其中包括页面、文件和子类别,称为

members()

  >>> gen = cat.members()
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.