Tôi hiện đang làm việc trên một scraper được viết bằng C# 4.0. Tôi sử dụng nhiều công cụ, bao gồm các tính năng WebClient và RegEx tích hợp của .NET. Đối với một phần của scraper của tôi tôi phân tích cú pháp một tài liệu HTML bằng cách sử dụng HtmlAgilityPack. Tôi có tất cả mọi thứ để làm việc như tôi mong muốn và đã đi qua một số dọn dẹp của mã.KeyNotFoundException khi sử dụng phương thức HtmlEntity.DeEntitize()
Tôi đang sử dụng phương pháp HtmlEntity.DeEntitize()
để xóa HTML. Tôi đã thực hiện một vài thử nghiệm và phương pháp này dường như hoạt động tốt. Nhưng khi tôi thực hiện phương pháp trong mã của tôi, tôi tiếp tục nhận được KeyNotFoundException
. Không có thêm chi tiết nào nên tôi khá lạc. Mã của tôi trông giống như sau:
WebClient client = new WebClient();
string html = HtmlEntity.DeEntitize(client.DownloadString(path));
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
HTML được tải xuống được mã hóa UTF-8. Làm thế nào tôi có thể nhận được xung quanh ngoại lệ KeyNotFound
?
Ra khỏi tò mò tôi đã cố gắng những trường hợp này với 'HttpUtility.HtmlDecode' và nó chỉ xử lý các trường hợp cuối cùng của 'â' – Setsu
@Setsu - Tôi không cố gắng mỗi nhân vật. Dựa trên văn bản đầu vào của tôi (chỉ có ngôn ngữ Rumani), tôi biết tập hợp các ký tự có vấn đề và đặt tất cả chúng vào trong hàm. Tuy nhiên, người ta phải thích ứng khi cần thiết. Đây không phải là một giải pháp tốt, nhưng nó cho phép HtmlAgillityPack làm phép thuật của nó sau đó. – Alexei
Có lẽ tôi đã sai nhưng tôi nghĩ bạn đã nhầm lẫn ý tôi là gì. 'HttpUtility.HtmlDecode' tồn tại trong không gian tên' System.Web' và được cung cấp bởi khung công tác, thay vì HtmlAgilityPack. Tôi chỉ tò mò muốn xem liệu nó có xử lý những trường hợp đó hay không. – Setsu