C# HtmlAgilityPack 页面结构解析

HtmlAgilityPack是.net下的一个HTML解析类库。支持用XPath来解析HTML。简单的来说,在页面上查询元素速度更快,更准。

      HtmlWeb web = new HtmlWeb();//创建Web请求
      HtmlAgilityPack.HtmlDocument doc = web.Load(m);//加载页面的链接
      var json = Common.Http_Get(m);//获取网页源代码
      //获取某个节点的集合,这里获取出现 p 标签 的集合            
      var nodes = doc.DocumentNode.SelectNodes("//p");
       //遍历集合                                 
      foreach (HtmlNode node in nodes)
      {
         try
          {
             //获取其中一个出现p标签的HTML源码
             HtmlNode thumbnail = HtmlNode.CreateNode(node.OuterHtml);
             //获取p标签文本内容
             var thumbnailstr = thumbnail.InnerText.Trim();
             // 获取img目录下的img标签中的图片链接
             var img_node = thumbnail.SelectSingleNode("//img");
             var img = img_node.Attributes["src"].Value;
             //获取a目录下a标签class属性为ql-link 的节点
             var link_node = thumbnail.SelectSingleNode("//a[@class='ql-link']");
             var link = link_node.Attributes["href"].Value;
            }catch{}
      }
             

注意:记得XPath表达式要写对,否则会报错或查询不到某元素
/ {从根节点选取}
// {选择元素后代元素,必须在后面跟上nodeName}
. {选取当前节点}
… {选取当前节点的父节点}
@ {选取属性节点(@是attribute的缩写)}
/root/child[3] {选取root元素的第三个child子元素,注意,这和数组下标不一样,从1开始计数}
//child[@attr] {选取所有具有属性attr的child元素}
body/p[position()=4] {这个XPath表达式将选取body子元素中第4个p元素,注意这里从1开始计数}
//div[@class=‘ql-link’] {获取某个class属性为ql-link 的div 层 }

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值