博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# HTML解析工具HtmlAgilityPack XPath 模糊查询not()函数和contains()函数
阅读量:4287 次
发布时间:2019-05-27

本文共 1100 字,大约阅读时间需要 3 分钟。

如果想使用Xpath过滤属性中含有或不含有等逻辑判断,需要以下两个函数

Xpath 的not()函数 不含后指定属性等

contains() 属性中含有指定字符串的过滤

实例说明1

//选择不包含class属性的节点var result = node.SelectNodes(".//span[not(@class)]");//选择不包含class和id属性的节点var result = node.SelectNodes(".//span[not(@class) and not(@id)]");//选择不包含class="expire"的spanvar result = node.SelectNodes(".//span[not(contains(@class,'expire'))]");//选择包含class="expire"的spanvar result = node.SelectNodes(".//span[contains(@class,'expire')]");
实例2:去除指定属性和值的节点

//获取列表,去除class=all和class=tableRule 的tr节点  HtmlNodeCollection col = main.SelectNodes("//tr[not(contains(@class,'all')) and not(contains(@class,'tableRule'))]");
实例3:查找指定属性含有字符串的节点

HtmlNode name = node.SelectSingleNode("//td[contains(@class,'sName')]");

如果需要更复杂的过滤筛选可以自定义判断
另一种解析方式,假如我们需要根据div的class属性是否包含post值来提取div中的InnerText:
inner text
inner text
inner text
可以用以下方法来提取符合条件的所有HtmlNode节点
var results = doc.DocumentNode                 .Descendants("div")                 .Where(x=>x.Attributes.Contains("class") &&                           x.Attributes["class"].Value.Contains("post"));

提取得到节点数据之后,根据实际处理即可。

更多:

 

转载地址:http://ubogi.baihongyu.com/

你可能感兴趣的文章
selenium+Python 上传文件
查看>>
python+selenium 上传文件或者图片
查看>>
轻松自动化---selenium-webdriver(python) (四)--如何定位一组元素?
查看>>
selenium-webdriver(python) (七)-----多层框架或窗口的定位
查看>>
selenium多个窗口切换
查看>>
python selenium下载电子书
查看>>
H5和flash的区别
查看>>
selenium-webdriver(python) (十)
查看>>
轻松自动化---selenium-webdriver(python) (十二)--转自虫师
查看>>
Tomcat6.0的安装与配置
查看>>
测试套件edit里的名称含义
查看>>
Postman(get/post)
查看>>
飞行的小球
查看>>
小球撞墙
查看>>
下大雪
查看>>
上下左右移动小球
查看>>
打字母的游戏
查看>>
鼠标孔令志小球
查看>>
为什么谷歌浏览器无法添加扩展程序
查看>>
swichomege安装
查看>>