xpath中的坑

使用xpath易错点

1、//的误用

通过xpath得到的elem对象,不能在开头使用//进行定位。在开头使用//是对原elem进行xpath

举个例子:

from lxml import etree

html = """<html>
<body>
<li><i>1<i></li>
<li><i>2<i></li>
<li><i>3<i></li>
<li><i>4<i></li>
<li><i>5<i></li>
<li><i>6<i></li>
<li><i>7<i></li>
<li><i>8<i></li>
</body>
</html>"""

html = etree.HTML(html)
lis = html.xpath('//li')
# 打印第一个li节点
print(etree.tostring(lis[0]).decode())
# 在开头使用//取到的文本
print(lis[0].xpath('//i/text()'))
# 去掉开头//取到的文本
print(lis[0].xpath('i/text()'))
print(lis[0].xpath('i//text()'))
# 直接对html使用
print(html.xpath('//i/text()'))

"""
运行结果
<li><i>1<i/></i></li>

['1', '2', '3', '4', '5', '6', '7', '8']
['1']
['1']
['1', '2', '3', '4', '5', '6', '7', '8']

"""
posted @ 2020-11-17 16:06  流水自净  阅读(133)  评论(0编辑  收藏  举报