Получить все страницы из данной категории из Википедии - PullRequest
0 голосов
/ 01 ноября 2018

Я использую 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  

но я не могу построить логику, как это сделать, этот код просто дает мне все страницы и некоторые страницы, которые также вложены в другие страницы. Как это сделать?

1 Ответ

0 голосов
/ 06 января 2019

Если вы хотите извлечь текст со страницы, вы должны использовать свойство text .

Итак, ваш код может выглядеть так:

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)
...