HtmlAgilityPack 用于 C# (.NET):完整指南与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程
\n

HtmlAgilityPack 用于 C# (.NET):完整指南与示例

\n\n
\n

1. 什么是 HtmlAgilityPack 及其用途

\n

HtmlAgilityPack 是一个强大的库,用于在 .NET 生态系统(C#、VB.NET、F#)中解析 HTML 文档。它为开发者提供了便捷的 API,用于导航、搜索、提取和修改 HTML 代码。与标准的 XML 解析器不同,HtmlAgilityPack 专为处理实际网络中常见的“脏”HTML 而设计:未闭合的标签、错误的属性、嵌套错误等。该库会自动修复此类缺陷,创建正确的 DOM 树。

\n

它的用途是什么?主要使用场景包括:网页抓取(从网站提取数据)、自动化测试 Web 界面、CMS 之间的内容迁移、分析 HTML 报告、清理和规范化 HTML 代码,以及创建自定义 HTML 生成器。通过支持 XPath 和 CSS 选择器(通过扩展),该库可以灵活且精确地选择所需元素。

\n

HtmlAgilityPack 由社区积极维护,开源,并兼容 .NET Framework 4.5+、.NET Core 2.0+、.NET 5/6/7/8,以及 Xamarin 和 Unity。这使其成为任何处理 HTML 的 .NET 开发者的通用工具。

\n
\n\n
\n

2. 安装

\n

通过 NuGet Package Manager 安装该库。在包管理器控制台(Package Manager Console)或 .NET CLI 终端中执行以下任一命令:

\n
// 通过 .NET CLI\ndotnet add package HtmlAgilityPack\n\n// 通过 Package Manager Console\nInstall-Package HtmlAgilityPack\n\n// 或通过 NuGet UI:搜索 "HtmlAgilityPack" 并安装最新稳定版本
\n

安装后,在文件开头添加 using 指令:

\n
using HtmlAgilityPack;
\n
\n\n
\n

3. 快速入门 — 最小工作示例

\n

考虑一个最简单的示例:加载 HTML 字符串,查找所有链接,并输出其文本和 URL。

\n
using System;\nusing HtmlAgilityPack;\n\nclass Program\n{\n    static void Main()\n    {\n        // 1. 创建 HTML 文档\n        var htmlDoc = new HtmlDocument();\n        \n        // 2. 加载 HTML(实际中可能来自文件或网络)\n        string html = @"\n        \n            \n                \n            







\n        ";\n        htmlDoc.LoadHtml(html);\n        \n        // 3. 使用 XPath 选择所有 <a> 标签\n        var links = htmlDoc.DocumentNode.SelectNodes("//a");\n        \n        // 4. 遍历每个链接并输出文本和 href\n        if (links != null)\n        {\n            foreach (var link in links)\n            {\n                string text = link.InnerText.Trim();\n                string href = link.GetAttributeValue("href", "");\n                Console.WriteLine($"文本: {text}, URL: {href}");\n            }\n        }\n    }\n}
\n

执行结果:

\n
文本: Example, URL: https://example.com\n文本: PythonLib, URL: https://pythonlib.ru
\n
\n\n
\n

4. 主要类和方法

\n

以下是 HtmlAgilityPack 的关键类和方法,包含详细描述和示例。

\n\n

4.1. HtmlDocument — 用于处理文档的主要类

\n

签名: public class HtmlDocument

\n

描述: 表示整个 HTML 文档。允许

推荐