一起学爬虫使用Flask+Redis维护代理池
Posted 菜鸟名企梦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起学爬虫使用Flask+Redis维护代理池相关的知识,希望对你有一定的参考价值。
简介
写爬虫有时会面临封ip的问题,使用代理就可以伪装我们的IP。那么我们爬虫请求的时候可能就需要非常多的IP,这里我们维护了一个代理池:池内有非常多的IP,代理IP队列,我们可以向池内放代理ip,也可以从代理池中请求ip。我们需要定期检查和更新,保证代理池中的ip可用。
Redis主要用于维护池,提供池的队列存储,flask主要用于实现代理池接口,使用flask可以从代理池拿出一个代理,这个过程就是使用flask做一个接口,通过web的形式把代理返回,这样我们就可以拿到代理了。
为什么要使用代理
许多⽹网站有专⻔门的反爬⾍虫措施,可能遇到封IP等问题。需要代理伪装自己的ip请求网站
互联⽹网上公开了了⼤量免费代理,利⽤好资源。
通过定时的检测维护同样可以得到多个可⽤代理。
很多卖代理的商家其实就是维护了一个代理池,自己维护代理池就不用付费购买了
代理池的要求
多站抓取,异步检测:多站抓取:指的是我们需要从各大免费的ip代理网站,把他们公开的一些免费代理抓取下来;一步检测指的是:把这些代理通过异步请求的方式,利用这些代理请求网站:如果能正常请求就证明代理可用,如果不能正常请求就证明代理不行,这时就可以把这个代理剔除掉,异步指的是:我们不需要一直等待代理请求网站,到得到response之后在执行相应的操作就可以了,异步可以提高检测效率。
定时筛选,持续更新:我们维护一个代理池,我们需要做的是需要定时从里面拿出一部分来检测,剔除掉不可用的代理。这可以保证代理是可用的
提供接口,易于提取:代理实际上是维护在一个队列中,队列可以使用数据库存储,也可以使用一些数据结构来存储,但是如果要获取代理的话,要提供一个简单的接口,最简单的是web形式的接口:本文主要演示一个利用python flask包来提供接口:之后使用python请求网址,从网页中拿到代理的信息了
代理池的架构
获取器:从各大网站平台抓取代理:ip和端口
过滤器:剔除掉不可用的代理
将可用代理放到代理队列
定时检测器:剔除不可用的代理
API:通过接口形式拿到代理对象,方便使用
代理池实现
代码比较长就不贴在正文中了:
长按识别下方二维码,发送“代理池”
即可获取代理池的完整源码和详细解析
热 文 推 荐
为了方便小伙伴们查看历史文章,小编对历史文章进行了分类整理
部分目录截图如下(可上下滑动):
点击阅读原文获取4T基础资料和5T精品资料
喜欢就给个“在看”
以上是关于一起学爬虫使用Flask+Redis维护代理池的主要内容,如果未能解决你的问题,请参考以下文章