Daniel Herding:
Ich habe für den PyWikipediaBot einen SAX2-Parser in
Python geschrieben,
der das pages_current-Dump liest [1]. Der funktionierte zwar
einwandfrei, aber leider war er zu langsam, er benötigte mehrere
Stunden, um das Dump zu durchlaufen.
Darum habe ich mich für eine etwas unsaubere Lösung entschieden. In der
aktuellen Version wird einfach ein regulärer Ausdruck verwendet, der
einen Eintrag matcht [2, suche nach Rpage]. Das ganze läuft jetzt etwa
10 bis 20 Mal so schnell wie die Version mit dem SAX2-Parser.
Werden denn da auch & , < und > in den Textblöcken ersetzt?
Ich kann zwar kein Python, aber das hätte ich eigentlich finden müssen.
Genau diesen Entwicklungsweg habe ich nämlich auch mit Perl hinter mir:
Erst habe ich XML::Twig verwendet, was viel zu langsam war. Dann habe
ich es selbst geschrieben mit einem regulären Ausdruck zur Ersetzung
von & usw.. Das war aber immer noch zu langsam. Dann habe ich die
Ersetzung mit einer C-Funktion neu geschrieben, was das Ganze noch mal
um den Faktor 2.5 beschleunigt hat. Beim Dump der aktuellen Versionen
ist das vielleicht noch egal (ca. 10min/4min), aber beim vollen Dump
(der momentan unvollständig ist und vollständig ca. 12GB lang sein
müsste) macht das schon einen Unterschied.
--
GMX DSL = Maximale Leistung zum minimalen Preis!
2000 MB nur 2,99, Flatrate ab 4,99 Euro/Monat:
http://www.gmx.net/de/go/dsl