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