Đầu tiên, cài đặt gói nuget HTMLAgilityPack vào dự án của bạn.
Sau đó, như một ví dụ:
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
// There are various options, set as needed
htmlDoc.OptionFixNestedTags=true;
// filePath is a path to a file containing the html
htmlDoc.Load(filePath);
// Use: htmlDoc.LoadHtml(xmlString); to load from a string (was htmlDoc.LoadXML(xmlString)
// ParseErrors is an ArrayList containing any errors from the Load statement
if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)
{
// Handle any parse errors as required
}
else
{
if (htmlDoc.DocumentNode != null)
{
HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body");
if (bodyNode != null)
{
// Do something with bodyNode
}
}
}
(NB: Mã này là một ví dụ duy nhất và không nhất thiết là cách tiếp cận tốt nhất / duy nhất. Đừng sử dụng nó một cách mù quáng trong ứng dụng của riêng bạn.)
Các HtmlDocument.Load()
phương pháp cũng chấp nhận một dòng suối mà là rất hữu ích trong việc tích hợp với các lớp học định hướng dòng khác trong khuôn khổ NET. Trong khi HtmlEntity.DeEntitize()
là một phương pháp hữu ích khác để xử lý các thực thể html chính xác. (cảm ơn Matthew)
HtmlDocument
và HtmlNode
là các lớp bạn sẽ sử dụng nhiều nhất. Tương tự như trình phân tích cú pháp XML, nó cung cấp các phương thức selectSingleNode và selectNodes chấp nhận các biểu thức XPath.
Hãy chú ý đến các HtmlDocument.Option??????
thuộc tính boolean. Những điều khiển này kiểm soát cách thức Load
và LoadXML
phương thức sẽ xử lý HTML / XHTML của bạn.
Ngoài ra còn có một tệp trợ giúp được biên dịch có tên là HtmlAgilityPack.chm có một tài liệu tham khảo đầy đủ cho từng đối tượng. Điều này là bình thường trong thư mục cơ sở của giải pháp.