Ich habe eine HTML-Seite, die von einem vorhandenen Werkzeug generiert wird - ich kann die Ausgabe dieses Werkzeugs nicht ändern.
Ich möchte jedoch xmllint
mit der Option --xpath
verwenden, um einige spezifische Informationen aus der heruntergeladenen Webseite auszuwählen. Das Problem ist, dass die Seite mit folgendem beginnt:
<html lang=en><head>...
Und xmllint
wirft Fehler fast sofort:
Das Problem scheint sicherlich die fehlenden umschließenden Anführungszeichen um den Wert des Attributs lang
zu sein. Die ganze Seite ist voll von dieser Art von Problem. (Obwohl nur sporadisch.)
Fast jeder Browser kann das gut parsen - wie kann ich auch xmllint
davon überzeugen? Ich möchte vermeiden, einen Zwischenschritt zu machen, um die Datei zu "reparieren". Stattdessen möchte ich entweder:
1) Suchen Sie nach einem Flag, einer Validierungsoption usw., die dem Parser hilft, oder:
2) Verwenden Sie ein anderes Werkzeug. (Aber was?% Co_de% ist immer mein Einstiegspunkt für XPath-Befehle in der Befehlszeile.)
Außerdem führt die Verwendung von xmllint
zu:
Sie können den HTML-Parser in xmllint
mit der Befehlszeilenoption --html
aktivieren. Auf diese Weise können Sie HTML-Dokumente verarbeiten.
Sie sollten den HTML-Code mit einem milden Parser vorverarbeiten. (Das ist der Hauptunterschied: HTML ist eine viel lockerere Syntax als XML erlaubt.) Versuchen Sie HTML5-Tidy und lassen Sie XMLLint an dem Ergebnis arbeiten:
%Vor%Wenn die Analyse nicht abgebrochen wird, können Sie die Fehler einfach mit:
ausblenden %Vor%Dann gibt es Xidel , das ich nur für die Auswahl einiger Daten aus HTML-Seiten erstellt habe. (Obwohl es nicht perfekt ist. Ich wurde über zwei missgebildete Dokumente, die es nicht behandeln konnte, erzählt)
%Vor%