Python 抓取页面使用 XPath 出现的问题

在Python网页抓取中遇到XPath使用问题,首次.xpath()正确,后续使用导致结果异常。解决办法是:第二次调用时需删除XPath路径前的斜杠。正确写法为:.xpath('td'),确保td元素在tr内。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 抓取页面使用 XPath 出现的问题

在抓取页面时,有时候需要多次使用 .xpath 方法来获取需要的元素。

在使用 .xpath 方法时,第一次 .xpath 的结果是正确的,而之后使用会出现抓取到的东西和预期不一样的情况。

比如:

trs = html.xpath('//table//tr')

获得的 trs 是表中的行元素,之后想要获取其中的格元素时:

for i in range(1, len(trs)):
	tds = trs[i].xpath('//td')
	proxy[tds[5].text].append(tds[1].text + '\t' + tds[2].text)

按正常思路来说代码仿佛没有问题,但出现的结果却非常奇怪,实际上是因为在第二次使用 .xpath 是需要把前面的斜杠去掉,即变成:

for i in range(1, len(trs)):
	tds = trs[i].xpath('td')
	proxy[tds[5].text].append(tds[1].text + '\t' + tds[2].text)

这个时候,会发现获取的元素是正确的,而且在使用时 td 元素必须是 tr 的子元素。

是个小问题,但是如果不注意实在是令人抓狂。本人已经掉坑 3 次了,今天真的决定记录一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值