HtmlAgilityPack解析html文档

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 是一个非常不错的选择。