新闻动态

关于python中.xpath的使用问题

发布日期:2021-12-13 04:45 | 文章来源:CSDN

在python中使用xpath定位时,有时候会先用.xpath定位到一个地点,for循环后,继续使用.xpath,但是会出现问题,比如在下面这个例子中:

根据xpath定位到了tr,注意游览器自动生成了tbody,在python中要把自动生成的tbody层级去掉。

此时我们想获取tr下面的td,请看代码

import requests
from lxml import etree
 
url = "https://www.w3school.com.cn/xpath/xpath_axes.asp"
res = requests.get(url).text
html = etree.HTML(res)
a = html.xpath("(//table[@class='dataintable'])[1]/tr")
print(a)
 
for i in a:
 s = i.xpath("//td")
 print(s)
 print(len(s))

for i in a下,我们想找到的是每个tr下面的td,按理来说只有两个,但是返回的却是全部的44个td,问题出在哪里呢?原来是s = i.xpath("//td")这个写法不对,虽然 i 继承了 a 的xpath路径,但是如果写成//td,等于告诉xpath重新搜索全部,必须要加上点才可以。s = i.xpath(".//td"),一个点代表当前目录,两个点代表上级目录

这次搜索正常了

总结:除非在一开始的搜索式直接写成 (//table[@class='dataintable'])[1]/tr//td,这样直接搜索td,不用带点,在复用.xpath的时候,必须加上点表明当前目录,否则搜索不到想要的结果

到此这篇关于关于python中.xpath的复用的文章就介绍到这了,更多相关python .xpath复用内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部