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 @   流水自净  阅读(134)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示