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           

......

转载于:https://www.cnblogs.com/yuzhihui/p/5339103.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值