从维基百科获取给定类别的所有页面
Get All Pages from a given Category from wikipedia
我正在使用 Wikipedia-api 从给定维基百科类别的页面中提取所有文本。
如教程中所述-
def print_categorymembers(categorymembers, level=0, max_level=2):
for c in categorymembers.values():
print("%s: %s (ns: %d)" % ("*" * (level + 1), c.title, c.ns))
if c.ns == wikipediaapi.Namespace.CATEGORY and level <= max_level:
print_categorymembers(c.categorymembers, level + 1)
cat = wiki_wiki.page("Category:Physics")
print("Category members: Category:Physics")
print_categorymembers(cat.categorymembers
但我无法构建逻辑,如何去做,这段代码只是给了我所有页面和一些嵌套到其他页面中的页面。
怎么做?
如果你想从页面中提取文本,你必须使用 text property。
因此您的代码可能如下所示:
cat = wiki_wiki.page("Category:Physics")
print("Category members: Category:Physics")
for p in cat.categorymembers.values():
if p.namespace == wikipediaapi.Namespace.CATEGORY:
# it is category, so you have to make decision
# if you want to fetch also text from pages that belong
# to this category
print(p)
elif p.namespace == wikipediaapi.Namespace.MAIN:
# it is page => we can get text
print(p)
print(p.text)
我正在使用 Wikipedia-api 从给定维基百科类别的页面中提取所有文本。
如教程中所述-
def print_categorymembers(categorymembers, level=0, max_level=2):
for c in categorymembers.values():
print("%s: %s (ns: %d)" % ("*" * (level + 1), c.title, c.ns))
if c.ns == wikipediaapi.Namespace.CATEGORY and level <= max_level:
print_categorymembers(c.categorymembers, level + 1)
cat = wiki_wiki.page("Category:Physics")
print("Category members: Category:Physics")
print_categorymembers(cat.categorymembers
但我无法构建逻辑,如何去做,这段代码只是给了我所有页面和一些嵌套到其他页面中的页面。 怎么做?
如果你想从页面中提取文本,你必须使用 text property。
因此您的代码可能如下所示:
cat = wiki_wiki.page("Category:Physics")
print("Category members: Category:Physics")
for p in cat.categorymembers.values():
if p.namespace == wikipediaapi.Namespace.CATEGORY:
# it is category, so you have to make decision
# if you want to fetch also text from pages that belong
# to this category
print(p)
elif p.namespace == wikipediaapi.Namespace.MAIN:
# it is page => we can get text
print(p)
print(p.text)