HtmlAgilityPack Problem beim Lesen von HTML

.net c# html html-agility-pack parsing

Frage

Ich lese Websites in C # und bekomme Inhalte als String .... es gibt einige Websites, die keine gut strukturierte HTML-Struktur haben.

Ich benutze HtmlAgilityPack, das mir in diesem Fall ein Problem gibt.

Können Sie mir vorschlagen, was ich benutzen soll, damit es die ganze Zeichenfolge lesen kann und ich nützliche Informationen bekommen kann?

Hier ist mein Code

 htmlDoc.LoadHtml(s);
  if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)

Warum diese IF-Bedingung für meinen Fall wahr ist

Akzeptierte Antwort

Was ist der Fehler, den Sie bekommen? Gibt es eine Ausnahme oder wollen Sie nur den Fehler sehen? Schwer zu sagen, was deine eigentliche Frage ist.

Sie können die Markup-Fehler im HTML- HtmlDoc.ParseErrors mithilfe der HtmlDoc.ParseErrors Eigenschaft sehen und sie HtmlDoc.ParseErrors . Dadurch erhalten Sie die Zeilennummer, den Code und die Art des Fehlers.

Sie können mehr Informationen über diese Eigenschaft hier https://stackoverflow.com/a/5367455/235644 sehen

Bearbeiten

Ok, du hast deine Frage seit meiner Antwort aktualisiert. Sie können den spezifischen Fehler sehen, der in Ihrer IF-Anweisung durch das .ParseErrors der oben beschriebenen .ParseErrors .

Zweiter Schnitt

Sie können die Fehler wie folgt durchlaufen:

 foreach (var error in htmlDoc.ParseErrors)
 {
      Debug.WriteLine(error.Line);
      Debug.WriteLine(error.Reason);
 }

Beliebte Antwort

Wenn Ihr HTML- HtmlAgilityPack extern ist und Sie ihn nicht beheben können, können Sie ihn zuerst über einen Bereinigungspräprozessor HtmlAgilityPack und dann mit HtmlAgilityPack .

Dies wird versuchen, so viele Probleme wie möglich automatisch zu beheben, bevor HtmlAgilityPack es sehen kann. Das beliebteste HTML-Bereinigungstool ist Tidy. Siehe die .NET Version hier:

http://sourceforge.net/projects/tidynet/



Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow