zoukankan      html  css  js  c++  java
  • 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("
    ", " "));
                                    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           

    ......

    作者:yuzhihui
    出处:http://www.cnblogs.com/yuzhihui/
    声明:欢迎任何形式的转载,但请务必注明出处!!!
  • 相关阅读:
    重新看待Jar包冲突问题及解决方案
    一步步完成Maven+SpringMVC+SpringFox+Swagger整合示例
    [ACM] POJ 1611 The Suspects (并查集,输出第i个人所在集合的总人数)
    James Whittaker的软件測试戒律(二)
    <html>
    andorid ndk 各种坑啊 记录下
    Android的ProgressBar进度条-android学习之旅(三十一)
    Android Jsoup 爬取网页数据
    iOS笔记UI--使用storyboard加入约束
    使用appledoc 生成技术API文档具体解释
  • 原文地址:https://www.cnblogs.com/yuzhihui/p/5339103.html
Copyright © 2011-2022 走看看