在做爬虫请求的时候我们可能需要很多的ip,这里我们就要维护一个代理池。
代理池即一个代理的队列,我们可以添加代理也可以取出一个代理。我们需要
定期的检查更新来保证其正常使用
Redise
用来维护池,实现池的队列存储
flask
实现代理池的一个接口,从代理池拿出一个代理
用falsk做一个接口,通过web返回代理
为什么要用代理池
许多网站有专门的的反爬虫措施,可能遇到封ip等问题。我们需要用代理来伪装ip请求网站
代理池的要求
1、多站抓取,异步检测
2、定时筛选,持续更新
3、提供接口,易于提取
代理池架构
1、向代理队列添加可用代理
如图代理队列右侧为添加过程
获取器:从各大网站平台抓取代理,请求免费的代理网站,获取ip端口临时存储到一个数据结构中
过滤器:筛选代理,测试代理请求网站。如果可以正常请求网站则代理可用。
通过获取器获取下来的期待李,通过过滤器筛选可用的代理,向代理池添加代理
2、维护更新
定时检测器:定时的从代理池中拿出代理,通过过滤器筛选代理,删除不可用的代理
3、API
实现通过接口拿到代理。利用web服务将最新的代理拿出放在网页形成接口,通过请求接口获得代理的ip和端口