使用大* .bz2(维基百科转储)

时间:2016-08-18 08:17:37

标签: wikipedia wikipedia-api bzip2

我需要从06 / 2012-06 / 2016获取关于“Dollar”和“Euro”的英语维基百科文章的每日页面浏览量。

原始转储(* .bz2)位于: https://dumps.wikimedia.org/other/pagecounts-ez/merged/

例如, https://dumps.wikimedia.org/other/pagecounts-ez/merged/pagecounts-2014-01-views-ge-5-totals.bz2提供2014年1月的每小时/每日数据。

问题: 解压缩的文件太大,无法在任何文本编辑器中打开。

理想的解决方案: 读取每个.bz2文件的Python脚本(?),仅搜索en wikipedia“Dollar”/“Euro”条目,并将每日综合浏览量放入数据框。

提示:使用网页浏览API(https://wikitech.wikimedia.org/wiki/Pageviews_API)没有用,因为我需要在2015年之前提供一致的数据.stats.grok数据(http://stats.grok.se/)是既不是一种选择,因为生成的数据不同且不兼容。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案可能是编写搜索脚本以逐行读取标准输入(Python中的sys.stdin; 当然那里a Stack Overflow question about that也是)然后将bzcat的输出汇总到它:

$ bzcat pagecounts-2014-01-views-ge-5-totals.bz2 | python my_search.py

确保您的Python代码确实以递增方式处理输入,而不是尝试一次缓冲整个内存中的输入。

这样,就不需要使用任何特定于bzip2的代码使Python脚本本身复杂化。

(这也可能比尝试在Python中进行bzip2解码更快,因为bzcat进程可以与搜索脚本并行运行。)