Pywikibot使用MW's API to fetch revisions。
API不提供修订版本的大小。
API提供了size
参数的rvprop
选项,而不是大小更改。这样便可以轻松计算出尺寸变化。
不幸的是,pywikibot并未获取size
的修订版本。
您可以file a bug report for pywikibot team。
一个人可以直接使用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','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': 3501}
,
请参见https://phabricator.wikimedia.org/T259428。
该修补程序已合并到master分支,并将通过pypi部署在5.2.0版中。
,
AXO 的提议有更好的方法:
import pywikibot
site = pywikibot.Site('wikipedia:en')
page = pywikibot.Page(site,'Main Page')
for rev in page.revisions(total=5):
# do whatever you want with Revision Collection rev
print(dict(timestamp=str(rev.timestamp),size=rev.size))
代码将按预期打印:
{'timestamp': '2021-02-03T11:11:30Z','size': 3508}
{'timestamp': '2021-02-03T11:03:39Z','size': 3480}
{'timestamp': '2020-11-10T08:18:07Z','size': 3508}
{'timestamp': '2020-11-10T02:32:23Z','size': 4890}
{'timestamp': '2020-11-10T00:46:58Z','size': 4880}
本文链接:https://www.f2er.com/1820176.html