Почему pywikibot выдает <связанный метод Page.categories of Page (Wikipedia: Sandbox)> на выходе?
Я использую базовую версию PywikiBot в linux для создания программы, которая просто получает категории кода страницы Википедии: мой код:
# -*- coding: utf-8 -*-
import pywikibot
site = pywikibot.Site("en")
page = pywikibot.Page(site, u"Wikipedia:Sandbox")
item = pywikibot.ItemPage.fromPage(page)
dictionary = item.get()
print page.categories
И я ожидаю получить категории, но я получаю:
<bound method Page.categories of Page(Wikipedia:Sandbox)>
Я следую этому уроку, но должен сказать, что документация в pywikibot написана плохо, и вы должны открыть файлы, чтобы узнать некоторую информацию, и я нашел категории def:
def categories(self, withSortKey=False, step=None, total=None,
content=False):
"""Iterate categories that the article is in.
@param withSortKey: if True, include the sort key in each Category.
@param step: limit each API call to this number of pages
@param total: iterate no more than this number of pages in total
@param content: if True, retrieve the content of the current version
of each category description page (default False)
@return: a generator that yields Category objects.
"""
return self.site.pagecategories(self, withSortKey=withSortKey,
step=step, total=total, content=content)
И я предпочитаю не менять рамочные коды.
1 ответ
Решение
Попробуй это:
print page.categories()
Редактировать:
I test this before i get :<pywikibot.data.api.CategoryPageGenerator object at 0xb6c444ec>
Это потому, что метод возвращает генератор, который должен быть повторен, прежде чем он получит данные. При использовании списка (page.categories()) он создает список из генератора.
Другой и предпочтительный способ - использовать генератор в цикле for, например так:
for category in page.categories():
print category
Вы можете прочитать о генераторах здесь: