Frage

Ich versuche, einige Daten aus verschiedenen HTML-Seiten mit einem Python-Programm zu extrahieren. Leider enthalten einige dieser Seiten vom Benutzer eingegebenen Daten, die „leichte“ Fehler gelegentlich hat - nämlich unpassenden Tag

.

Gibt es einen guten Weg, Pythons xml.dom zu haben versucht, Fehler oder etwas Derartiges zu korrigieren? Alternativ gibt es eine bessere Möglichkeit, Daten aus HTML-Seiten zu extrahieren, die Fehler enthalten kann?

War es hilfreich?

Lösung

könnten Sie verwenden HTML Tidy aufzuräumen oder Schöne Suppe zu analysieren. Könnte sein, dass Sie das Ergebnis in eine temporäre Datei zu speichern, aber es sollte funktionieren.

Cheers,

Andere Tipps

habe ich BeautifulSoup für solche Aufgaben zu verwenden, aber jetzt habe ich verschoben HTML5lib ( http://code.google.com/p/html5lib/ ), das funktioniert gut in vielen Fällen, in denen BeautifulSoup versagt

andere Alternative ist die Verwendung von " Elemente Soup " ( http: //effbot.org/zone/element-soup.htm ), das ist ein Wrapper für schöne Suppe mit ElementTree

lxml macht einen guten Job bei ungültigen HTML-Parsing.

Nach ihrer Dokumentation Schöne Suppe und html5lib manchmal eine bessere Leistung in Abhängigkeit von der Eingabe. Mit lxml können Sie wählen, welche Parser zu verwenden, und greifen Sie über eine einheitliche API.

Wenn jython für Sie akzeptabel ist, tagsoup ist sehr gut bei Junk-Parsing -. Wenn es ist, ich die jdom Bibliotheken viel einfacher gefunden als andere XML-Alternativen zu verwenden,

Dies ist ein Ausschnitt aus einem Demo-Mockup mit Bildschirm von tfl Reise Planern Schaben zu tun:

 private Document getRoutePage(HashMap params) throws Exception {
        String uri = "http://journeyplanner.tfl.gov.uk/bcl/XSLT_TRIP_REQUEST2";
        HttpWrapper hw = new HttpWrapper();
        String page = hw.urlEncPost(uri, params);
        SAXBuilder builder = new SAXBuilder("org.ccil.cowan.tagsoup.Parser");
        Reader pageReader = new StringReader(page);
        return builder.build(pageReader);
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top