一、 定义: 利用代理可以伪装自己的ip进行爬虫的请求,有的请求可能需要许多的代理ip,代理池是许多代理的队列,可以放入与删除,可能进行定期的更新和检查,保证代理的可用性和质量,Redis主要维护池和提供其队列存储,Flask实现代理池的接口,利用web形式返回代理,从而拿到代理。
二、 使用代理池的原因:
1、 许多网站有专门的反爬虫措施,可能遇到封ip等问题;
2、 互联网上公开了大量免费代理,利用好资源;
3、 通过定期的检测维护同样可以得到多个可用代理。
三、 代理池的要求:
1、 多站抓取,异步检测
从各大免费的ip代理网站抓取其公开的免费代理,把这些代理通过异步请求的方式请求网站页面,从而筛选出可用的代理,异步可以提高检测效率
2、 定时筛选,持续更新
做了代理池之后,要定时从代理池中剔除不可用的代理,留下新的可用的代理,即通过定时筛选代理池,保证代理池的可用性
3、 提供接口,易于提取
提供web形式接口,用python请求网址,在网页中获取代理信息
四、 代理池架构
1、 获取器:
从各大网站平台上将代理抓取下来,即在一些免费代理平台上抓取免费代理
2、 过滤器:
筛选获取的代理,进行测试请求得到可用代理,添加到代理队列
3、 定时检测器:
随着时间变化,有的代理会不可用,所以需要进行定时检测,剔除掉不可用代理,保证代理队列可用性和持续更新
4、 API
需要实现接口,通过接口形式实现获取代理,请求接口获取代理端口和IP,方便提取
五、 代理池实现
GitHub:python崔庆才Flask+Redis代理池+听课笔记注释 https://github.com/TJRxiaotiaowa/py-