xpath表达式
今天详细学习了xpath表达式
一、层级
xpath表达式中层级表达有点类似bs4中的层级,在bs4中是使用 > 和空格进行层级分类,而在xpath中则是使用/和//。接下来,我们一起深入学习一下吧。
1.层级定位
1./:表示的是从根节点开始定位,同时表示一个层级。
tree = etree.parse('test.html')
r = tree.xpath('/html/body/div')
2.//:表示多个层级。可以表示从任意位置开始定位(将//放在层级表达式的最前面)
tree = etree.parse('test.html')
r = tree.xpath('/html//div')
r = tree.xpath('//div')
二、属性和索引定位
1.属性定位
属性定位://div[@class='song'] 即://标签名[@属性=‘属性名’]tree = etree.parse('test.html')
r = tree.xpath('//div[@class='song']')
2.索引定位
索引定位://div[@class='song']/p[3] 需注意:索引是从1开始的。tree = etree.parse('test.html')
r = tree.xpath('//div[@class='tang']/li[5]')
三、取文本和属性
1.取文本的两种类型
1.获取标签中直系的文本类容:/text()tree = etree.parse('test.html')
r = tree.xpath('//div[@class='tang']/li[3]/a/text()')[0]
2.获取标签中的非直系类容: //text()
tree = etree.parse('test.html')
r = tree.xpath('//div[@class='tang']//text()')
2.获取属性
取属性:/@属性名 如:img/@src
tree = etree.parse('test.html')
r = tree.xpath('//div[@class='song']/img/@src')
总结
到这里xpath的基本表达式就学完了,接下来我们将进行案例学习。