HtmlAgilityPack HTML操作类库的使用
HtmlAgilityPack是.NET下的一个开源的HTML解析类库。支持用XPath来解析HTML。命名空间:HtmlAgilityPack。
1、读取网络中html网页内容,获取网页中元素body内的html,处理所有img元素的src属性后以字符串返回
if (l_sWenBenHtmlFtpPath.Substring(l_sWenBenHtmlFtpPath.LastIndexOf(".") + 1) == "html") { HtmlWeb htmlWeb = new HtmlWeb(); HtmlDocument htmlDoc = htmlWeb.Load(l_sWenBenHtmlFtpPath); HtmlNode htmlNode = htmlDoc.DocumentNode; HtmlNodeCollection nodes = htmlNode.SelectNodes("//body"); //使用xpath语法进行查询 if (nodes != null) { foreach (HtmlNode bodyTag in nodes) { HtmlNodeCollection nodes2 = htmlNode.SelectNodes("//img"); //使用xpath语法进行查询 if (nodes2 != null) { foreach (HtmlNode imgTag in nodes2) { string imgHttpPath = imgTag.Attributes["src"].Value; imgTag.Attributes["src"].Value = l_sWenBenHtmlFtpPath.Substring(0, l_sWenBenHtmlFtpPath.LastIndexOf("/") + 1) + imgHttpPath; } } l_sWenBenHtml = bodyTag.InnerHtml; } } }
2、通过HtmlAgilityPack Html操作类库将html格式的字符串加载为html文档对象,再对html dom进行操作
//1.解码前台提交的html字串 string sDecodeString = HttpUtility.HtmlDecode(HttpUtility.UrlDecode(sEncodeString)); //2.拼接成完整的html字串 sDecodeString = @"<!DOCTYPE html><html><head><meta http-equiv=""content-type"" content=""text/html;charset=UTF-8""/>" + @"</head><body><div>" + sDecodeString + @"</div></body></html>"; //3.处理html的img标签的src属性-C#的HTML DOM操作 HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(sDecodeString.Replace("\n", " ")); HtmlNode node = doc.DocumentNode; HtmlNodeCollection nodes = node.SelectNodes("//img"); //使用xpath语法进行查询 if (nodes != null) //没有img节点时出错 { //处理html字符串中img标签的src属性 foreach (HtmlNode imgTag in nodes) { string imgHttpPath = imgTag.Attributes["src"].Value; imgHttpPath = imgHttpPath.Substring(imgHttpPath.LastIndexOf("/") + 1); imgTag.Attributes["src"].Value = imgHttpPath; } } //4.获取处理后的html字符串 sHtmlString = node.OuterHtml; //处理img中src属性后的html字符串 //5.将字符串存入html格式的文件中 //do something
......
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期