用于Python的Wikipedia修订历史解析器

wikirevparser的Python项目详细描述


WikiRevParser

WikiRevParser是一个分析Wikipedia修订历史的Python库。它允许你分析维基百科上的网页随着时间的推移和不同语言版本的发展。在

该库以语言代码和Wikipedia页面标题作为输入,提取修订历史记录,并将嘈杂、非结构化的内容解析为修订历史中每个时间戳的干净、可访问的数据。 您可以使用此库访问页面引用的开发,分析内容或图像随时间的推移,比较不同语言的内容表,创建编辑器网络,等等。在

开始吧

除了WikiRevParser之外,您还需要我们的版本Wikipedia API wrapper,它提取并返回Wikipedia页面的整个修订历史。注意Python3+是必需的。在

$ pip3 install wikirevparser
$ git clone git@github.com:ajoer/Wikipedia.git

示例

要获取英文维基百科上Marie Curie上页面的修订历史记录,请运行:

^{pr2}$

{你现在可以开始研究数据的修订了。在

让我们看看links的用法。 我想知道现在网页上的链接是否与第一次制作网页时相同?在

>>> edits = list(data.items())
>>> first_links = edits[-1][1]["links"]
>>> latest_links = edits[0][1]["links"]
>>> present_now = first_links[0] in latest_links 
>>> print("The only link in the first version was '%s'.\nThat link is still present in the current version: %s." % (first_links[0], present_now))
The only link in the first version was 'pierre and marie curie'.
That link is still present in the current version: False.

好吧,但是现在页面上最频繁的链接是什么?在

>>> from collections import Counter
>>> links = Counter()
>>> for l in latest_links:
...	links[l] += 1
>> print(links)
Counter({'polonium': 5, 'radium': 5, 'university of paris': 5, 'russian empire': 4, 'gabriel lippmann': 4, 'nobel prize in physics': 4, 'nobel prize in chemistry': 4, ... })

通过解析的修订历史记录,您还可以获得以下问题的答案:

  • “皮埃尔和玛丽·居里”的链接是什么时候删除的?在
  • 是谁编辑的?在
  • 那个编辑也编辑了玛丽·居里的Afrikaans page?在
  • 页面上引用最多的资源是什么?在
  • 英文页和Arabic one上都使用了哪些引用?在
  • 有多少维基百科编辑过这个英文页面?那Dutch page?在
  • 居里的形象和玛丽的形象一样吗?在
  • 维基百科在哪里?在
  • 多久编辑一次页面?在
  • 英文版是持续发展还是编辑一度加强?在
  • 英文页面的编辑模式与Korean page的编辑模式如何匹配?在
  • 。。。还有很多其他问题

阅读文档以获得更多的灵感和功能,如果遇到问题,请转到FAQ or file a bug!在

文件

阅读位于wikirevparser.readthedocs.io的文档,了解更多细节和用例示例。在

许可证

这项工作是麻省理工学院授权的。有关详细信息,请参阅LICENSE file。在

学分

  • @goldsmith为pythonwikipediaapi包装器Wikipedia。在
  • 用于创建和维护数据的Wikimedia Foundation和所有wikipedian。在
  • 这项工作得到了欧盟地平线2020研究和创新计划的资助,该计划是根据Marie Skłodowska-Curie赠款协议第812997号提供的。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从Dropwizard中的Minio检索文件时,GET请求中的超时是如何处理的?   带Hibernate的java Jackson用于序列化以避免枚举   Raspberry Pi上的java Jave分段错误   java在屏幕旋转时不保存当前片段和数据   java War文件未在Heroku上正确部署   如何使用Java处理Selenium webdriver中的促销广告或cookie   java处理“用法:PApplet[options]<classname>[sketch args]”   java文本文件错误扫描程序   运行第一个JavaFX模块化程序时出现java异常   java将fileoutputstream转换为字符串   如何调试gstreamerjava?   java Spring RestTemplate ResponseBody类是什么样的   如何将JSON数组转换为Java列表。我在用斯文森   javascript在显示div按钮后进入新页面