通过代理ip进行分布式爬虫的几种方案

如果不使用代理ip , 爬虫工作必定无路可行 , 因此大部分爬虫工作者都会去购买安全稳定的代理ip 。使用了高质量的代理ip后 , 会不会就能够无后顾之忧了呢?这个可不会这么容易 , 还要改进方案 , 有效分配资源 , 提升工作效率 , 又快速又稳定又高效的完成爬虫 。
通过代理ip进行分布式爬虫的几种方案
方案一、每个进程从接口API中随机取一个IP列表来反复使用 , 失效后再调用API获取 , 大致逻辑是这样:
1、每个进程 , 从接口随机取回一批ip回来 , 反复试着ip目录去抓取数据;
2、要是访问成功 , 则继续抓取下一条 。
3、要是失败了 , 再从接口取一批IP , 继续尝试 。
弊端:每个IP都是有期限的 , 要是提取了一百个 , 用到第二十个时 , 或许剩下的大多数都无法使用了 。要是设置HTTP请求时连接时间超时是3秒 , 读取时间超时是5秒 , 那么或许会耗费3-8秒的时间 , 在这3-8秒内可能抓取了几百次了 。
方案二:每个进程从接口API中随机取一个IP来使用 , 失败则再调用API获取一个IP , 大致逻辑如下:
1、每个进程 , 从接口随机取回一个ip来 , 用这个ip来浏览资源
2、要是访问成功 , 则继续抓下一条
3、要是失败了 , 再从接口随机取一个IP , 继续尝试
弊端:调用API获取IP的行为非常频繁 , 会对代理服务器造成特别大的压力 , 影响API接口稳定 , 可能会被限制提取 。这类方案也不适合 , 无法持久稳定的运行 。
方案三:先提取大量IP导入本地数据库 , 从数据库里面取IP , 大致逻辑如下:
1、在数据库里面建一个表 , 写一个导入脚本 , 每分钟请求多少次API(咨询代理IP服务商建议) , 把IP列表导入到数据库里面 。
2、在数据库里面记录好导入时间、IP、Port、过期时间、IP可用状态 等字段;
3、写一个抓取脚本 , 抓取脚本从数据库里面读取可用IP , 每个进程从数据库获取一个IP进行使用 。
4、执行抓取 , 对结果进行判断 , 处理cookie等 , 只要出现验证码或者失败就放弃这个IP , 重新换一个IP 。
这种方案有效的避开了代理服务器资源的消耗 , 有效的分配代理IP的使用 , 更加的高效和稳定 , 保障了爬虫工作的持久性和稳定性 。极光ip代理稳定可靠 , 亲测好用的哟 , 建议大家可以测试一下 。

【通过代理ip进行分布式爬虫的几种方案】


    推荐阅读