Pywikibot использует API MW для получения ревизий .
API не предоставляет измененный размер для ревизий.
Вместо изменения размера API предоставляет * Опция 1007 * для параметра rvprop
. Используя это, можно было бы легко рассчитать изменения размера.
К сожалению, pywikibot не извлекает size
для изменений.
Вы можете отправить отчет об ошибке для команды pywikibot .
Можно напрямую использовать класс PropertyGenerator
для получения ревизий с желаемыми свойствами:
from pywikibot import Site, Page
from pywikibot.data.api import PropertyGenerator
site = Site("en", "wikipedia")
revs = next(iter(PropertyGenerator('revisions', site=site, parameters={
'titles': 'Main Page',
'rvprop': 'timestamp|size',
})))['revisions']
print(len(revs))
for rev in revs[:5]:
print(rev)
Приведенный выше код напечатает:
4239
{'timestamp': '2020-07-23T12:44:21Z', 'size': 3500}
{'timestamp': '2020-07-23T12:43:46Z', 'size': 3499}
{'timestamp': '2020-07-23T12:43:31Z', 'size': 3500}
{'timestamp': '2020-06-30T07:05:28Z', 'size': 3499}
{'timestamp': '2020-06-22T13:37:29Z', 'size': 3501}
Старый ответ : как отмечалось в комментариях, этот метод не обрабатывает продолжения API и, следовательно, не рекомендуется , если вам нужны все версии страницы.
import pywikibot
from pywikibot.data.api import Request
site = pywikibot.Site("en", "wikipedia")
r = Request(site, parameters={
'action': 'query',
'titles': 'Main Page',
'prop': 'revisions',
'rvprop': 'timestamp|size',
'rvlimit': 5,
}).submit()
pages = r['query']['pages']
for page_id, page_info in pages.items():
for rev in page_info['revisions']:
print(rev)
Будет напечатан приведенный выше код:
{'timestamp': '2020-07-23T12:44:21Z', 'size': 3500}
{'timestamp': '2020-07-23T12:43:46Z', 'size': 3499}
{'timestamp': '2020-07-23T12:43:31Z', 'size': 3500}
{'timestamp': '2020-06-30T07:05:28Z', 'size': 3499}
{'timestamp': '2020-06-22T13:37:29Z', 'size': 3501}