1. 简介
HtmlAgilityPack 是一个 .NET 平台下的一个 html 解析库,支持 html 5,他可以用来处理 web 页面,抓去网页等操作。本篇文章将详细介绍该解析库的用法及其代码示例。
2. 安装和使用
可以通过 NuGet 安装 HtmlAgilityPack 库。
步骤如下:
· 打开 Visual Studio,创建一个 .NET 应用程序,例如控制台应用程序。
· 单击菜单栏上的“工具” →“NuGet包管理器”→“程序包管理器控制台”。
· 在程序包管理器中,输入以下命令:
Install-Package HtmlAgilityPack
· 单击“确定”后,NuGet 程序包管理器将自动安装 HtmlAgilityPack。
然后,可以在程序中引用解析库,例如:
using HtmlAgilityPack;
3. 初始化 HtmlDocuement
HtmlDocument 是解析库中最重要的类,它代表整个 HTML 文档,可以用它来访问/操作 HTML 文档。
创建 HtmlDocument 实例十分简单:
HtmlDocument doc = new HtmlDocument();
4. 加载 HTML 文档
HtmlDocument 实例创建后,需要加载 HTML 文档。加载 HTML 有两种方式:从文件中加载,从 URL 加载。
从文件中加载:
doc.Load("path/to/file.html");
从 URL 中加载:
doc.LoadHtml(new WebClient().DownloadString("http://www.example.com/page.html"));
5. 解析 HTML
解析 HTML 很简单。例如,我们想要获取 HTML 中的所有段落:
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//p"))
{
Console.WriteLine(node.InnerHtml);
}
解析 HTML 主要使用 Xpath 规则来进行节点选择操作,HtmlNode 的 SelectNodes 方法可以根据 Xpath 规则来获取 HTML 中的节点。例如,上面代码中的 "//p" 就是一个 Xpath 规则,表示选择 HTML 中所有名为 "p" 的节点。
6. 写入 HTML
通过 HtmlDocument 类,我们不仅可以解析 HTML,也能够修改和写入 HTML 文档。因此,在使用 HtmlAgilityPack 进行 Web 爬虫时,可以用它来找到我们需要的标签,再爬取其内部信息。
向 HTML 中添加新节点:
HtmlNode node = doc.CreateElement("p");
node.InnerHtml = "Hello, World!";
doc.DocumentNode.AppendChild(node);
还可以通过以下代码将修改后的 HTML 写入文件中:
doc.Save("path/to/file.html");
7. 总结
HtmlAgilityPack 是一款非常强大的 HTML 解析库,功能丰富,使用起来非常方便。在进行 Web 爬虫时,它能够帮助我们找到我们需要的标签,然后再用相应的工具进行过滤。如果需要解析 HTML,HtmlAgilityPack 是一个非常不错的选择。