HtmlAgilityPack的简单使用
HtmlAgilityPack可以对Html进行解析,获取某个标签的属性的值、InnerText、InnerHtml等,还可以去除js代码,css样式和注释。
using HtmlAgilityPack; HtmlDocument htmlDocContent = new HtmlDocument(); htmlDocContent.LoadHtml(strHtmlContent);
htmlDocContent.DocumentNode为这段Html的根标签,它的ChildNodes属性为其子标签。
比如,要获取这段Html中所有的img的src属性的值,和每个标签的InnerText,可以通过递归获取
StringBuilder sbContent = new StringBuilder(); if (node.ChildNodes.Count < 1) { if (node.InnerText.IsNotNullOrEmpty()) { sbContent.AppendLine(string.Concat("<txt>", node.InnerText, "</txt>")); } if (string.Equals(node.Name, "img", StringComparison.InvariantCultureIgnoreCase) && node.Attributes.Contains("src")) { sbContent.AppendLine(string.Concat("<img>", FormatHtml.GetFullImageUrl(node.Attributes["src"].Value, siteUrl), "</img>")); } return sbContent.ToString(); } foreach (HtmlNode childNode in node.ChildNodes) { sbContent.Append(FormatHtml.GetContent(childNode, siteUrl)); } return sbContent.ToString();
如果这段html中只有一个标签或者有多个同级标签,那么HtmlAgilityPack会自动生成一个根标签。
HtmlAgilityPack还可以处理js代码,css样式和注释
foreach (HtmlNode nodeScripte in node.Descendants("script").ToList()) { nodeScripte.Remove(); } foreach (HtmlNode nodeStyle in node.Descendants("style").ToList()) { nodeStyle.Remove(); } foreach (HtmlNode nodeComment in node.Descendants("//comment()").ToList()) { nodeComment.Remove(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端