python xpath使用 关于python中.xpath的使用问题
Peaunt_Python 人气:0想了解关于python中.xpath的使用问题的相关内容吗,Peaunt_Python在本文为您仔细讲解python xpath使用的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:python,.xpath复用,python,xpath,下面大家一起来学习吧。
在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的时候,必须加上点表明当前目录,否则搜索不到想要的结果
加载全部内容