JSoup analysiert ungültiges HTML mit nicht geschlossenen Tags

8

Unter Verwendung von JSoup einschließlich der letzten Version 1.7.2 gibt es einen Bug, der ungültiges HTML mit nicht geschlossenen Tags analysiert.

Beispiel:

%Vor%

Das Dokument, das erzeugt wird, ist:

%Vor%

Die Browser würden etwas wie:

erzeugen %Vor%

Jsoup sollte als Browser oder als Quellcode funktionieren.

Gibt es eine Lösung? Beim Blick in die API habe ich nichts gefunden.

    
Javier Salinas 04.04.2013, 14:17
quelle

3 Antworten

5

Das korrekte Verhalten besteht darin, wie andere Browser beim Analysieren dieses ungültigen HTML zu fungieren. Vielen Dank für die Einreichung dieses Fehlers . Ich habe das Problem behoben, durch das die Adoptionsagentur die ursprünglichen Attribute im neuen Knoten nicht beibehalten konnte. Es wird in 1.7.3 verfügbar sein, oder Sie können jetzt von Kopf aus bauen.

    
Jonathan Hedley 06.10.2013, 23:23
quelle
2

Wenn Ihr Ziel darin besteht, den Quellcode zu erhalten, den dieser Browser erzeugt, könnten Sie Selen verwenden und es dann an Jsoup übergeben, um es zu analysieren. aber Selen sollte einen echten Browser öffnen, natürlich könnte er es automatisch öffnen. Code wie folgt:

%Vor%

und a.html ist:

%Vor%

und das Ergebnis ist, dass Sie wollten:

%Vor%     
user2767013 12.09.2013 02:27
quelle
0

Ihr HTML ist nicht gültig

  Der Dokumenttyp

lässt das Element "P" hier nicht zu; fehlende "APPLET", "OBJECT", "MAP", "IFRAME", "BUTTON" Start-Tag

%Vor%      

Das erwähnte Element darf nicht in dem Kontext erscheinen, in dem Sie es platziert haben; die anderen erwähnten Elemente sind die einzigen, die beide dort erlaubt sind und das erwähnte Element enthalten können. Dies kann bedeuten, dass Sie ein umschließendes Element benötigen oder möglicherweise vergessen haben, ein vorheriges Element zu schließen.

     

Eine mögliche Ursache für diese Nachricht ist, dass Sie versucht haben, ein Element auf Blockebene (z. B. "& lt; p & gt;" oder "& lt; table & gt;") in ein Inline-Element einzufügen (z. B. "& lt; a & gt; "," & lt; span & gt; "oder" & lt; font ").

Es gibt keine Möglichkeit, defekten HTML-Code zu reparieren, und jeder Parser wird sein Bestes geben. Wenn Sie wiederholbare Ergebnisse für ungültiges HTML erzielen möchten, sollten Sie streng dieselbe Version desselben Parsers verwenden.

    
fglez 10.04.2013 16:14
quelle