首页>代理ip知识与免费资源>正文
使用代理IP爬虫,分布式有哪些方法?
发布日期:2019/10/16 10:09:00    阅读量:8648


QQ截图20191013112556.jpg


爬虫使用分布式有效提高工作效率及工作效率,这些也是从事爬虫工作者非常注重的部分,有效提高进度,快速采集数据信息,那么使用分布式的方法有哪些,很多人了解不够全面,为了提高工作效率;

 

第一:每个进程从接口API中随机取一个IP列表(比如一次提取50IP)来循环使用,失败则再调用API获取,大概逻辑如下:

每个线程,从接口随机取回一批IP回来,循环尝试IP列表去抓取数据;

如果访问成功,则继续抓取下一条。

如果失败了(比如超时、出现验证码等),再从接口取一批IP,继续尝试。

方案缺点:IP代理都是有时间有效期的,如果提取了50个,你在一定期限内是有了前20个,后面的可能由于时间限制就用不了了。

如果你把http请求设置的链接时间超时为3秒钟,毒物时间超时间5秒,那么这3-8秒就可能被你浪费掉,有这3-8秒能做好多事了。

 

第二:每个进程从接口API中随机取一个IP来使用,失败则再调用API获取一个IP,大概逻辑如下:

每个线程,从接口随机取回一个IP来,用这个IP去访问资源,

如果访问成功,则继续抓下一条。

如果失败了(比如超时、出现验证码等),再从接口随机取一个IP,继续尝试。

方案缺点:频繁的调用API获取IP,会对代理服务器造成非常大的压力,影响API接口稳定,可能会被限制提取。这种方案不能持久稳定的运行。

 

第三:先提取大量IP导入本地数据库,从数据库里面取IP,大概逻辑如下:

在数据库里面建一个表,写一个导入脚本,每分钟请求多少次API(咨询代理IP服务商建议),把IP列表导入到数据库里面。

在数据库里面记录好 导入时间、IPPort、过期时间、IP可用状态 等字段;

写一个抓取脚本,抓取脚本从数据库里面读取可用IP,每个进程从数据库获取一个IP进行使用。

执行抓取,对结果进行判断,处理cookie等,只要出现验证码或者失败就放弃这个IP,重新换一个IP

 

爬虫不经需要高质量稳定的代理ip,在有效的爬虫进行中也有很多方法提高数据信息采集,分布式采集是最有效的方法,也是爬虫爱好的广泛运用。