爬虫时会遇到的那些事

爬虫时会遇到的那些事

爬虫被反爬封锁

原因

同一个IP大规模地、长时间地获取数据,会被服务器发现后进行封锁等一系列操作,导致无法获取爬虫数据。

解决方案

1.user_agent伪装和轮换
因为不同浏览器的不同版本都有不同的user_agent,因此在选择user_agent时,不要一直使用一个user_agent,而是在多个user_agent中随机使用其中一个。
下面提供一个user_agent列表
https://blog.csdn.net/qq_43612275/article/details/86696137
具体操作方法见下

headers = {
            'User-Agent': agent[random.randint(0, len(agent) - 1)]
        }

2.使用代理ip和代理服务器
检查访问ip也是反爬机制的一个防御手段,你如果有多个公网ip,可以换着使用,不要一直使用一个,或者就去使用代理服务器,博主目前没有用过代理服务器,就不在这里介绍了。
3.设置一个访问间隔
因为如果你一直无间断的访问的话,对面服务器承受巨大压力的同时也会寻找压力产生的原因,这个时候你可能就会被当成"间谍"抓住0.0。因此如果你没有很特殊的需求的话,可以每隔一段时间爬取一次,最好设置一个随机的间隔时间,这样我们才能伪装的更好。
因为博主的爬虫任务需要一个时间间隔,所以后续也会更新如何设置间隔时间的内容,敬请关注。
4.使用session机制
因为cookie会保存客户端的相关状态,在爬虫中如果遇到了cookie的反爬就可以使用session机制。
因为requests.session对象和requests模块用法几乎一致.如果在请求的过程中产生了cookie,如果该请求使用session发起的,则cookie会被自动存储到session中。
用法就很简单了,将我们的requests.get()改为requests.session.get()

# requests.get(main_url, headers=headers)
# 改为
requests.Session().get(main_url, headers=headers)

在以后遇到了其他爬虫问题,也会在这里继续更新,敬请期待。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值