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
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);
}
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: