代理池的一个应用流程:
爬虫模块:采集代理IP
·从代理IP网站上采集代理IP
·进行校验(获取代理响应速度,协议类型,匿名类型),
·把可用代理IP存储到数据库中
代理IP的校验模块:获取指定代理的响应速度,支持的协议以及匿名程度
·原因:网站上所标注的响应速度,协议类型和匿名类型是不准确的
·这里使用httpbin.org进行检测
数据库模块:实现对代理IP的增删改查操作
·这里使用MongoDB来存储代理IP
检测模块:定时的对代理池中代理进行检测,保证代理池中代理的可用性.
·从数据库读取所有的代理IP
·对代理IP进行逐一检测,珂用开启多个协程,以提高检测速度
·如果该代理不可用,就让这个代理分数-1,当代理的分数到0了,就删除该代理;如果检测到代理可用就恢复为满分.
代理IP服务接口:提供高可用的代理IP给爬虫使用
·根据协议类型和域名获取随机的高质量代理IP
·根据协议类型和域名获取多个高质量代理IP
·根据代理IP不可用域名,告诉代理池这个代理IP在该域名下不可用,下次获取这个域名的代理IP时候,就不会再获取这个代理IP了,从而保证代理IP高可用性.
代理池的其他模块
数据模型:domain.py:
·代理IP的数据模型,用于封装代理IP相关信息,比如ip,端口号,响应速度,协议类型,匿名类型,分数等.
程序启动入口:
main.py·代理池提供一个统一的启动入口
工具模块:
·日志模块:用于记录日志信息
·htp模块:用于获取随机User-Agent的请求头
配置文件:settings.py
·用于默认代理的分数,配置日志格式,文件,启动的爬虫,检验的间隔时间等。