xpath表达式学习总结

获取所有节点

获取符合某一特征的所有节点,用//
比如:获取a标签的所有节点,使用//a
比如:获取所有class为"m-b-sm"的h2节点,使用//h2[@class=“m-b-sm”]

获取子节点

获取某个节点下符合某一特征的所有子节点,使用/
比如:获取a标签下的h2节点,使用//a/h2

获取父节点

获取某个节点的父节点,使用/…/*和/…/@属性(这里应该是两个. ,由于编辑器的原因,成了三个.)
比如:获取a标签的所有父亲节点,使用//a/…/*(这里应该是两个. ,由于编辑器的原因,成了三个.)
比如,获取a标签的所有父亲节点的class属性,使用/…/@class(这里应该是两个. ,由于编辑器的原因,成了三个.)

也可以用/parent::*和/parent::/@属性,这种方式的能力比…/强。
比如:获取a标签的所有父节点,使用//a/parent::*
比如:获取a标签的所有父节点的class属性,使用//a/parent::/@class
比如:获取a标签的所有父节点中所有class属性为"bird"的父节点,使用//a/parent::[contains(@class,“bird”)]这种取值方式用…/是无法实现的

获取祖先节点

获取所有祖先节点,使用/ancestor::*
比如:获取a标签的所有祖先,使用//a/ancestor::*
**这个会直接找到最高一层的html节点,因此,其实作用不是很大

获取祖先节点中所有的div节点://a/ancestor::div

获取儿子节点

获取儿子节点使用/child::
获取所有的儿子节点:/a/child:: *
获取所有儿子节点中,class为name的li节点:/a/child::li[@class=“name”]

获取儿孙节点

获取儿孙节点使用/descendent::
获取所有儿孙节点:/a/descendent:: *
获取所有儿孙节点中的li节点:/a/descendent::li

获取当前节点后的所有节点

获取当前节点后的所有节点使用/following:: *
获取当前节点后的第2个节点:/a/following:: *[2]

获取当前节点后的所有同级节点

获取当前节点后的所有同级节点使用/following-sibling:: *

筛选出满足单个属性值的节点

当属性只有1个值的时候:
使用[@属性=“xxx”]可以获取属性为xxx的节点
比如获取class属性为"name"的所有li节点,使用//li[@class=“name”]
当属性有多个值的时候:
使用[contains(@属性名,属性值)]
有时一个标签的某个属性会有多个值,比如<–a class=“name blue” > <–/a>中,a标签的class属性就有两个属性值,如果此时想要获取所有使用了name类的a标签,该怎么过滤呢?可以使用//a[contains(@class,“name”)]

筛选出满足多个属性值的节点

使用and符号,可以筛选出同时满足多个属性值的节点
比如获取class=name,同时type=button的a标签,则为//a[@class=“name” and @type=“button”]
比如获取class包含name,同时type=button的a标签,则为//a[contains(@class,“name”) and @type=“button”]

获取文本值

获取文本值使用/text()方法。
比如获取h2标签的文本值,可以使用//h2/text()
这里要注意的是,如果标签有子标签,则text()会获取到换行符,换行符也属于标签的文本。这种情况下,如果使用/text(),获取的将全都是换行符,只有使用//text()才会获取到子标签中的文本。如果不想要换行符,最好是在子标签后使用换行符。
比如想要获取a标签的子标签h2的文本,则使用//a/h2/text()。

获取属性值

获取属性值使用/@属性的方法
比如获取h2的class属性值,可以使用//h2/@class
比如获取a标签的链接值,可以使用//a/@href

按照位置取元素

取第一个li元素: //li[1] 注意,就是从1开始数,而非从0开始数
取最后一个li元素://li[last()]
取前两个li元素: //li[position()❤️]
取倒数第3个li元素://li[last()-2]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值