Ich arbeite gerade an einem in C # 4.0 geschriebenen Scraper. Ich verwende eine Vielzahl von Tools, einschließlich der integrierten WebClient- und RegEx-Funktionen von .NET. Für einen Teil meines Scraper analysiere ich ein HTML-Dokument mit HtmlAgilityPack. Ich habe alles wie gewünscht arbeiten lassen und habe den Code überarbeitet.
Ich verwende die HtmlEntity.DeEntitize()
-Methode, um den HTML- HtmlEntity.DeEntitize()
zu bereinigen. Ich machte ein paar Tests und die Methode schien großartig zu funktionieren. Aber als ich die Methode in meinen Code implementierte, bekam ich KeyNotFoundException
. Es gibt keine weiteren Details, also bin ich ziemlich verloren. Mein Code sieht so aus:
WebClient client = new WebClient();
string html = HtmlEntity.DeEntitize(client.DownloadString(path));
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
Der heruntergeladene HTML-Code ist UTF-8-codiert. Wie kann ich die KeyNotFound
Ausnahme KeyNotFound
?
Mein HTML hatte einen Textblock wie folgt:
... found in sections: 233.9 & 517.3; ...
Trotz des Abstands und des Dezimalpunkts wurde & 517.3;
als Unicode-Zeichen.
Einfach HTML-Codierung des Rohtextes hat das Problem für mich behoben.
string raw = "sections: 233.9 & 517.3;";
// turn '&' into '&', etc, before DeEntitizing
string encoded = System.Web.HttpUtility.HtmlEncode(raw);
string deEntitized = HtmlEntity.DeEntitize(encoded);