Obecnie pracuję na skrobak napisany w C# 4.0. Używam różnych narzędzi, w tym wbudowanych funkcji WebClient i RegEx .NET. Dla części mojego skrobaka parsuję dokument HTML używając HtmlAgilityPack. Mam wszystko do pracy tak, jak chciałem i przeszedłem trochę oczyszczenia kodu.KeyNotFoundException za pomocą metody HtmlEntity.DeEntitize()
Używam metody HtmlEntity.DeEntitize()
do czyszczenia kodu HTML. Zrobiłem kilka testów i metoda wydawała się działać świetnie. Ale kiedy zaimplementowałem metodę w moim kodzie, ciągle otrzymywałem KeyNotFoundException
. Nie ma dalszych szczegółów, więc jestem całkiem zgubiony. Mój kod wygląda następująco:
WebClient client = new WebClient();
string html = HtmlEntity.DeEntitize(client.DownloadString(path));
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
Pobrany HTML jest kodowany w UTF-8. Jak mogę obejść wyjątek KeyNotFound
?
Z ciekawości próbowałem te przypadki z 'HttpUtility.HtmlDecode” i to tylko obsługiwane ostatni przypadek «â» – Setsu
@Setsu - Nie próbowałem każdy znak. Na podstawie mojego tekstu wejściowego (tylko w języku rumuńskim) znam zestaw problematycznych znaków i umieszczam je wszystkie w funkcji. Jednak w razie potrzeby należy się dostosować. To nie jest przyzwoite rozwiązanie, ale pozwala HtmlAgillityPack wykonać swoją magię później. – Alexei
Może się mylę, ale myślę, że pomyliłeś to, co miałem na myśli z tym komentarzem. 'HttpUtility.HtmlDecode' funkcjonuje w przestrzeni nazw' System.Web' i jest dostarczany przez framework zamiast HtmlAgilityPack. Byłem tylko ciekawy, czy poradził sobie z tymi sprawami. – Setsu