xpath获取标签的属性值_xpath系列第3篇---谓语

上一篇所讲解的选取节点的方法,在面对复杂的文档时,会显得力不从心,原因在于无法做到精确选取,本篇讲介绍xpath语法里的谓语,通过该语法,可以精确的定位自己想要的节点,本篇文章所使用的数据如下

html_data 

1. 通过标签的属性选取节点

from 

文档中的标签,必然大量的重复,我们可以通过是否具有某个属性进行过滤,如果还是不能精确定位,则可以通过属性值进行准确定位,div[@class='div1'] 明确表示寻找class的属性值为div1的div标签。

1.1 多个属性选取

如果想选取既有class属性,又有name属性的li节点,则可以使用and进行连接

from lxml import etree

tree = etree.HTML(html_data)
li_nodes = tree.xpath("//li[@class and @name]")
print(li_nodes)

同理,你可以使用or来连接属性,表示有其中一个即可被选中

1.2 不包含某个属性

想选取不包含某个属性的节点,可以使用not关键字

from lxml import etree

tree = etree.HTML(html_data)
li_nodes = tree.xpath("//li[not(@class)]")

print(li_nodes)

2. 通过顺序选取节点

from 

3. 通过标签值选取

from 

通过对a标签的值进行比较,可以更加准确的定位数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值