首页>代理ip知识与免费资源>正文
分布式爬虫如何有效调用api链接获取代理ip?
发布日期:2019/10/28 11:16:20    阅读量:10723


QQ截图20191028111149.jpg


分布式爬虫提取代理的方式有很多,有的使用白名单授权绑定api链接提取,有的使用账号+密码授权,根据个人的习惯和需求,编写程序代码领用提取方式自动提取代理ip使用,提取的方式有很多种,如何根据自己的需求有效最大化的使用代理ip

 

以下哪种方式更适合分布式爬虫获取代理ip

 

一:每个线程单次获取一个ip

 

每个进程从接口使用API链接中随机提取一个IP出来使用,如访问失败,无效则再调用API链接提取一个IP

 

每个线程,从接口通过api链接随机提取回一个IP出来,使用获取到的代理IP去访问资源,如果访问成功,则继续抓下一条。如果失败了(比如超时、出现验证码等),再从接口随机取一个IP,继续尝试。

 

这种情况使用api链接频繁的调用API获取IP,会对代理服务器造成非常大的压力,影响API链接的稳定性,也有可能因频繁调用会被误以为遭受到攻击,api链接会被限制获取。所以这种方式不建议大家使用。

 

二:每个线程单次获取一个ip列表;

 

每个进程从接口使用API链接中随机取一个IP列表,如单次通过api链接获取100ip使用,访问失败或者失效则再调用API获取。

每次每个线程,通过api链接随机提取回一批IP回来,循环使用IP列表去爬取采集数据;

如果访问成功,则继续抓取下一条。如果失败了(比如超时、出现验证码等),再从接口取一批IP,继续尝试。

 

这种方式获取到的ip没有在最佳的时间里使用,因为每个ip有效存活期限的,如果单次获取100ip,当您用到前50ip时候,可能后面的全部失效的,当从获取到的ip就开始计时有效存活时间,ip在等待使用时已经开始慢慢再在失效了。造成了ip很大的浪费,没有在提取第一时间使用。

 

三:获取到的ip导入本地数据库;

 

首先通过api链接提取出大量IP导入本地数据库,再从数据库里面提取ip,在数据库里面建一个表,写一个导入脚本,调用api链接间隔时间是多少,这个间隔时间可在购买代理ip的服务平台注明或者客服告知,然后将提取到的IP列表导入到数据库里面。在数据库里面记录好 导入时间、IPPort、过期时间、IP可用状态 等字段;写一个抓取脚本,抓取脚本从数据库里面读取可用IP,每个进程从数据库获取一个IP进行使用。执行抓取,对结果进行判断,处理cookie等,只要出现验证码或者失败就放弃这个IP,重新换一个IP


综上分析得出来得结论,是第三种方法是我们分布式爬虫获取代理ip最佳的方式;

1 . 可以避开频繁调用api链接获取ip,防止api链接提取收限制,增加提取的稳定性,减少服务器的压力。

2 . 可以在ip最佳的有效时间中使用,减少大量的ip浪费,更好的ip利用,提高工作有效率,