HtmlAgilityPack 用于 C# (.NET):完整指南与示例
\n\n1. 什么是 HtmlAgilityPack 及其用途
\nHtmlAgilityPack 是一个强大的库,用于在 .NET 生态系统(C#、VB.NET、F#)中解析 HTML 文档。它为开发者提供了便捷的 API,用于导航、搜索、提取和修改 HTML 代码。与标准的 XML 解析器不同,HtmlAgilityPack 专为处理实际网络中常见的“脏”HTML 而设计:未闭合的标签、错误的属性、嵌套错误等。该库会自动修复此类缺陷,创建正确的 DOM 树。
\n它的用途是什么?主要使用场景包括:网页抓取(从网站提取数据)、自动化测试 Web 界面、CMS 之间的内容迁移、分析 HTML 报告、清理和规范化 HTML 代码,以及创建自定义 HTML 生成器。通过支持 XPath 和 CSS 选择器(通过扩展),该库可以灵活且精确地选择所需元素。
\nHtmlAgilityPack 由社区积极维护,开源,并兼容 .NET Framework 4.5+、.NET Core 2.0+、.NET 5/6/7/8,以及 Xamarin 和 Unity。这使其成为任何处理 HTML 的 .NET 开发者的通用工具。
\n2. 安装
\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 指令:
\nusing HtmlAgilityPack;\n 3. 快速入门 — 最小工作示例
\n考虑一个最简单的示例:加载 HTML 字符串,查找所有链接,并输出其文本和 URL。
\nusing 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 4. 主要类和方法
\n以下是 HtmlAgilityPack 的关键类和方法,包含详细描述和示例。
\n\n4.1. HtmlDocument — 用于处理文档的主要类
\n签名: public class HtmlDocument
描述: 表示整个 HTML 文档。允许