python爬虫避坑 Xpath的变化

小白学Python爬虫Xpath 返回空列表的问题,全网都没有说过的问题

一定记住,用浏览器抓的Xpath 不一定适用

很多人都习惯用浏览器抓的Xpath直接用在python里,然后经常会遇到抓完后返回的是空list
我也是初学,然后我就遇到了这种问题。于是开始全网找这个问题的解决方案,不幸的是翻遍了整个百度、整个C站,所有跟此类问题有关系的python文章,没有一个能解决问题。
如果你也遇到这种情况,一定要看完这篇文章。

Xpath的变化

直接上示例:
我原来用的xpath是
“//div[@class=“s_left f_l”]/div[3]/div[5]/p[1]/text()”
注:这个结构是我用八爪鱼软件抓取文本的时候生成的,在Firefox浏览器里firepath里是可以正确抓到我想要的文本的。
但是我放在python里就是抓不到,总是返回空列表。
我把网上的各种方法都试过了,就是不行!!!我甚至换成固定式的xpath 这样:html/body/div[6]/div/div[1]/div[3]/div[5]/p/text()
仍然不行!!
网上唯一几个接近答案的文章就是说要把“tbody”删除,因为python里格式化后已经自动去掉了“tbody”,但是我的xpath里明明没有“tbdoy”这个标签。
还有说因为有
这个标签 导致抓不到,这个标签只会导致只能抓第一个数据,后面并列的
下的确实抓不到,但是这不是我的问题,我的问题是什么都抓不到,返回的是空列表。

实在没办法,我在想是不是抓取的源代码有什么问题,于是我便把整个抓到网页的源代码都写入到一个文本文件里,用Notepad打开观察。写代码的都用这玩意,这个确实好用,能把html源码进行归类。

然后在把浏览器F12下的源代码也放入Notepad,我进行了对比才发现问题。
原来的 Xpath 是这样
“//div[@class=“s_left f_l”]/div[3]/div[5]/p[1]/text()”
我改后的是这样:
“//div[@class=“s_left f_l”]/div[3]/div[2]/p[1]/text()”

没错,就是二级的div标签数量改变了!!!!经过python格式化后的Xpath,自动清洗掉了三个div标签,结果导致我用原始Xpath路径怎么都抓不到信息。

由于我也是小白,具体我也不太懂是什么机制导致自动清洗掉了三个div标签。只不过这种情况,确实在网上没有看到任何一篇帖子有说明过。

其他小白学习的时候遇到这种情况,可以参考一下

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

emgbb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值