我正在尝试使用mwclient查找给定的Wikipedia页面的两个修订之间的文本差异。我有以下代码:
import mwclient
import difflib
site = mwclient.Site('en.wikipedia.org')
page = site.pages['Bowdoin College']
texts = [rev for rev in page.revisions(prop='content')]
if not (texts[-1][u'*'] == texts[0][u'*']):
##show me the differences between the pages
谢谢!
答案 0 :(得分:1)
不清楚是要使用difflib
的{{1}}生成的差异还是要使用mwclient
的mediawiki生成的差异。
在第一种情况下,您有两个字符串(两个修订的文本),并且想要使用difflib获得差异:
...
t1 = texts[-1][u'*']
t2 = texts[0][u'*']
print('\n'.join(difflib.unified_diff(t1.splitlines(), t2.splitlines())))
(difflib也可以生成HTML diff,有关更多信息,请参考文档。)
但是,如果要使用mwclient
来由MediaWiki生成的HTML差异,则需要修订ids
:
# TODO: Loading all revisions is slow,
# try to load only as many as required.
revisions = list(page.revisions(prop='ids'))
last_revision_id = revisions[-1]['revid']
first_revision_id = revisions[0]['revid']
然后使用compare action比较版本ID:
compare_result = site.get('compare', fromrev=last_revision_id, torev=first_revision_id)
html_diff = compare_result['compare']['*']