2016-08-18 39 views
1

我需要获取的日常数英文维基百科有关“美元”和“欧元”的文章从06/2012-06/2016的页面浏览量。使用大* .bz2(维基百科转储)

原始转储(*操作.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年一月提供每小时/每日数据

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

期望的解决方案: 一个Python脚本读取每个操作.bz2文件只,为EN维基百科“美元”的搜索/“欧元”条目,并把每天的浏览量为数据帧(?)。

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

+0

FWIW,[VIM](HTTP:// WWW。 vim.org/)可以毫无问题地处理任意大的文件。 – Tgr

+0

这里没有任何需要,你可以'bzgrep'这些文件,因为每一行都是关于一个页面的。只有在你想处理数据时才需要脚本,例如总结重定向的综合浏览量。 – Nemo

回答

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过程可以在与搜索脚本并行运行。)