2016-08-18 46 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過程可以在與搜索腳本並行運行。)