c# html_agility_pack(解析HTML)

介绍对象:html_agility_pack

html_agility_pack可以从web、文本、字节流、文件解析html,是一款不错的网络爬虫,html解析利器,支持net4.0++

本文将介绍如何使用该框架,获取html节点、属性等等常用功能,更多功能就有待自己去发掘吧

这里插播另一款解析工具(NSoup):https://blog.csdn.net/czjnoe/article/details/106600070


github:https://github.com/zzzprojects/html-agility-pack

官方文档:https://html-agility-pack.net/documentation

demo地址:https://github.com/czjnoe/GitHubDemo/tree/master/html-agility-packDemo


gitHub下载慢?参考文章https://blog.csdn.net/czjnoe/article/details/106034095

代码操作:

以百度官网(http://www.baidu.com)为操作对象:

注意:"//"表示从根节点开始查找,两个斜杠‘//’表示查找所有childnodes;一个斜杠'/'表示只查找第一层的childnodes;点斜杠"./"表示从当前结点而不是根结点开始查找。

//注意==>"//"表示从根节点开始查找,两个斜杠‘//’表示查找所有childnodes;一个斜杠'/'表示只查找第一层的childnodes;点斜杠"./"表示从当前结点而不是根结点开始查找。

            //从web读取
            {
                string url = "http://www.baidu.com";
                HtmlWeb web = new HtmlWeb();
                //从url中加载
                HtmlDocument doc = web.Load(url);
                //获得title标签节点,其子标签下的所有节点也在其中
                HtmlNode headNode = doc.DocumentNode.SelectSingleNode("//title");
                //获得title标签中的内容
                string Title = headNode.InnerText;

                //获得class为s_tab_inner下,标签为a的所有节点
                HtmlNodeCollection classNode = doc.DocumentNode.SelectNodes("//div[@id='head']");
                //遍历节点
                foreach (var item in classNode)
                {
                    //从当前节点开启查找,id为ul的节点
                   var collectionNodes= item.SelectNodes("./div[@id='u1']");
                }

                //获得id为head下的所有节点
                HtmlNodeCollection idNode = doc.DocumentNode.SelectNodes("//div[@class='s_tab_inner']/a");
                //遍历idNode
                foreach (var item in idNode)
                {
                    var OuterHtml=item.OuterHtml;//当前节点的html源码
                    var InnerHtml = item.InnerHtml;//当前节点的子节点的html源码
                    var InnerText = item.InnerText;//当前节点文本值

                    //获得标签属性为href的值
                    string aValue = item.Attributes["href"]?.Value;
                    //获得标签内的内容
                    string aInterText = item.InnerText;//获取文本值

                    Console.WriteLine("属性值:" + aValue + "\t" + "标签内容:" + aInterText);
                }


                //获得id为head下的第一个a节点
                HtmlNode idSingleNode = doc.DocumentNode.SelectSingleNode("//div[@class='s_tab_inner']/a");
                //获取子节点
                HtmlNodeCollection s_tab_innerChildCollection = idSingleNode.ChildNodes;

               
            }
            //从文件读取
            {
                var doc = new HtmlDocument();
                doc.Load("filePath");//文件路径
            }
            //字符串读取
            {
                var doc = new HtmlDocument();
                doc.LoadHtml("字符串");
            }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值