一起学爬虫使用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:通过接口形式拿到代理对象,方便使用

代理池实现

代码比较长就不贴在正文中了:

长按识别下方二维码,发送“代理池

即可获取代理池的完整源码详细解析


【一起学爬虫】使用Flask+Redis维护代理池


 热 文 推 荐 

 


为了方便小伙伴们查看历史文章,小编对历史文章进行了分类整理

部分目录截图如下(可上下滑动):

【一起学爬虫】使用Flask+Redis维护代理池【一起学爬虫】使用Flask+Redis维护代理池



点击阅读原文获取4T基础资料和5T精品资料


喜欢就给个“在看

以上是关于一起学爬虫使用Flask+Redis维护代理池的主要内容,如果未能解决你的问题,请参考以下文章

用Flask+Redis维护代理池

用Flask+Aiohttp+Redis维护动态代理池

python爬虫-代理池的维护

4.使用Redis+Flask维护动态代理池

使用redis所维护的代理池抓取微信文章

代理池的维护