当前位置:帮助中心>内容

代理IP爬虫采集分布式方案

发布日期:2020年06月19日 来源:2代理

  如果不使用代理ip,爬虫工作肯定没有出路,所以大多数爬虫工作人员会购买一个安全稳定的代理ip。在使用高质量的代理ip后,你能没有烦恼吗?这并不容易,还可以改进方案,有效地分配资源,提高工作效率,快速、稳定、高效地完成爬虫。

代理IP爬虫采集分布式方案

  使用代理ip进行分布式爬虫可以有以下这些方法


  方法一、通过进程从接口API中随机取IP地址列表用来反复使用,如果失效后再去调用API来获取IP,大概是这样的:


  1、每个进程,从接口随机获取一批ip回来,反复通过ip目录去采集数据;


  2、如果成功访问,那就继续再抓取下一条数据。


  3、如果失败了,那就从接口再获取一批IP,继续尝试连接。


  坏处就是:每个IP地址都是有时间限制的,如果提取了一百个IP地址,用到第二十个IP时的时候,也许剩下的大多数IP都没有办法使用了。这是需要设置HTTP请求时连接时间超时是3秒,读取时间超时是5秒,那么或许会耗费3-8秒的时间,在这3-8秒内可能抓取了几百次了。


  方法二:让每个进程随机在接口API中取一个IP来使用,如果失败那么就再调用API获取IP,大概逻辑如下:


  1、每个进程,随机从接口获取IP,用这个ip来浏览资源


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


  3、如果失败了,再从接口随机获取一个IP,继续尝试连接


  坏处就是:调用API获取IP的行为非常频繁,会让代务器产生特别大的压力,影响API接口的稳定性,也可能会被限制提取IP。这类方案不适合,没办法持久稳定的运行。


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


  1、在数据库里面建一个表,写一个导入脚本,每分钟请求API,把IP列表导入到数据库里面。


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


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


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


  这种方法可以避免消耗代理服务器的资源,有效的分配IP地址的使用,可以提高效率和保持稳定性,保障了爬虫工作者的使用效率。2代理IP就是市面上的主流IP更换软件,可以注册享受免费时长。