关于解决爬取拉勾全网遇到的302重定向问题的一些记录

本文记录了解决使用Scrapy爬取拉勾网时遇到的302重定向问题的过程。拉勾网更新了反爬策略,要求登录并携带特定cookie才能访问内容。通过分析发现,不仅登录时需要携带cookie,所有请求都需要。解决方案是在Scrapy中设置默认header,确保每次请求都携带登录时获得的cookie。

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

问题背景

没想到,拉勾再次进行了一番反爬策略的更新,不再是针对爬取频率、user-agent锁定等方案去反爬了,爬取的难度也增加了一些。

今天发现,如果单纯地使用scrapy的crawlspider去做全网爬取,会出现如下问题:
在这里插入图片描述
就是重定向到登录页面,增加了登录验证才能进行内容访问的逻辑,但接下来却发现并没有这么简单。

问题分析

分析一:
如果单纯只是需要登录才能爬取,那么只需要用selenium去模拟登陆就好了,但是事实证明,登陆进去之后,依然会报302,那到底是登录逻辑有问题还是访问本身有某些限制?

分析二:
通过用“分析一”中的试验,可以确定,首页登录是必须的,但是深度爬取却不仅仅需要登录验证这么简单,那么肯定是需要请求中携带一些特征才能被“拉勾”接收,到底是什么东西呢?

解决问题

为了搞清楚,到底登录后去访问各个模块和爬虫自己爬取有什么区别,我用chrome的调试窗口不断点击各个标签的同时,留意着header的变化。。。

发现,如果要正经地对拉勾发起请求,必须要带上登录时就分配好的cookie,通过用PostMan试验,得到了这个结论:

这里所谓的携带cookie,不是登录时才携带,而是对拉勾每次的请求都必须携带,点击每一个页面都需要携带

那么问题就好办了,如何把cookie放到每一次默认的header中呢?

从crawlspider源码发现,它继承的还是spider,那么就好办了,在重写start_requests方法前,就设置好head

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值