从维基百科站点获取所有名称?

Get all names from wikipedia-site?

我尝试从该站点提取所有名称 -

https://en.wikipedia.org/wiki/Category:Masculine_given_names

(我想要本网站和后续页面上列出的所有名称 - 但也包括顶部列出的子类别,如阿富汗男性名字、非洲男性名字等)

我尝试使用以下代码:

import pywikibot
from pywikibot import pagegenerators
site = pywikibot.Site()
cat = pywikibot.Category(site,'Category:Masculine_given_names')
gen = pagegenerators.CategorizedPageGenerator(cat)
for idx,page in enumerate(gen):
  text = page.text
  print(idx)
  print(text)

这通常工作正常并且至少给了我一个名称页面的详细信息页面。但是我怎样才能从本网站的所有子页面以及子类别中获取所有名称?

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

已经使用 Category 方法 回答了这个问题,但您也可以使用 pagegenerators CategorizedPageGenerator 函数。您只需要设置递归选项:

  >>> gen = pagegenerators.CategorizedPageGenerator(cat, recurse=True)

参考 documentation for it. You may also include pagegenerators options within your script in such a way decribed in this example 并使用 -catr 选项调用您的脚本:

  pwb.py <yourscript> -catr:Masculine_given_names