2016-08-18 1 views
1

Ich brauche die Nummer täglich Seitenaufrufe der englischen Wikipedia Artikel auf "Dollar" und "Euro" von 06/2012-06/2016.Arbeiten mit großen * .bz2 (Wikipedia Dump)

Raw-Dumps (* .bz2) finden Sie unter: https://dumps.wikimedia.org/other/pagecounts-ez/merged/

Zum Beispiel https://dumps.wikimedia.org/other/pagecounts-ez/merged/pagecounts-2014-01-views-ge-5-totals.bz2 Stunden-/Tagesdaten für Januar 2014

Problem bietet: Die entpackten Dateien sind zu groß in jedem Texteditor geöffnet werden.

Gewünschte Lösung: Ein Python-Skript, das nur jeder der .bz2 Dateien, sucht die en wikipedia „Dollar“/„Euro“ -Eintrag liest und legt die täglichen Seitenaufrufe in einen Datenrahmen (?).

Hinweis: Verwendung der Seiten-API (https://wikitech.wikimedia.org/wiki/Pageviews_API) nicht hilfreich sein, da ich konsistente Daten benötigen, um vor 2015 stats.grok Daten (http://stats.grok.se/) ist weder eine Option, da die erzeugten Daten unterschiedliche und inkompatible .

+0

FWIW, [Vim] (http: // www. vim.org/) kann beliebig große Dateien problemlos verarbeiten. – Tgr

+0

Sie brauchen nichts davon, Sie können einfach die Dateien "bzgrep", da jede Zeile über eine einzelne Seite ist. Ein Skript wird nur benötigt, wenn Sie die Daten z. Zusammenfassung der Seitenaufrufe für Weiterleitungen – Nemo

Antwort

1

wahrscheinlich die einfachste Lösung wäre, um Ihre Suche Skript zu schreiben, Zeile für Zeile von der Standardeingabe zu lesen (sys.stdin in Python; natürlich gibt es a Stack Overflow question about that auch) und dann kochend die Ausgabe von bzcat es:

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

Stellen Sie nur sicher, dass Ihr Python-Code tatsächlich die Eingabe inkrementell verarbeitet, anstatt zu versuchen, die gesamte Eingabe im Speicher auf einmal zu puffern.

Auf diese Weise müssen Sie Ihr Python-Skript nicht mit irgendeinem bzip2-spezifischen Code komplizieren.

(Dies auch schneller sein kann als der Versuch, die bzip2-Dekodierung in Python zu tun sowieso, da der bzcat Prozess parallel zu dem Such Skript ausführen kann.)

Verwandte Themen