Ich arbeite derzeit an einem Schaber in C# 4.0 geschrieben. 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.KeyNotFoundException mit der HtmlEntity.DeEntitise() -Methode
Ich verwende die HtmlEntity.DeEntitize()
Methode, um das HTML zu bereinigen. Ich machte ein paar Tests und die Methode schien großartig zu funktionieren. Aber als ich die Methode in meinem 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);
Das heruntergeladene HTML ist UTF-8 codiert. Wie kann ich die Ausnahme KeyNotFound
umgehen?
Aus Neugier habe ich versucht, diese Fälle mit 'HttpUtility.HtmlDecode‘ und behandeln nur den letzten Fall von ‚â‘ – Setsu
@Setsu - ich nicht jedes Zeichen versucht habe. Basierend auf meinem Eingabetext (nur in rumänischer Sprache) kenne ich die problematischen Zeichen und stelle sie alle in die Funktion. Allerdings sollte man sich nach Bedarf anpassen. Dies ist keine vernünftige Lösung, aber es ermöglicht HtmlAgillityPack danach, seine Magie zu tun. – Alexei
Vielleicht irre ich mich, aber ich glaube, du hast verwechselt, was ich mit diesem Kommentar meinte. 'HttpUtility.HtmlDecode' lebt im Namespace' System.Web' und wird vom Framework anstelle von HtmlAgilityPack bereitgestellt. Ich war nur neugierig, ob es diese Fälle behandelt. – Setsu