发布时间:2020-07-27 15:31:11
分布式爬虫这种抓取方式能够帮助爬虫工作者提高工作效率,不仅是爬虫进度得到了提升,而且数据抓取的速度也有飞跃进步。那么使用代理IP进行分布式爬虫要怎么进行呢?以下是操作教程:
第一:每个进程从接口API中随机取一个IP列表(比如一次提取50个IP)来循环使用,失败则再调用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列表导入到数据库里面。
在数据库里面记录好导入时间、IP、Port、过期时间、IP可用状态等字段;
写一个抓取脚本,抓取脚本从数据库里面读取可用IP,每个进程从数据库获取一个IP进行使用。
执行抓取,对结果进行判断,处理cookie等,只要出现验证码或者失败就放弃这个IP,重新换一个IP。
除了要有优质的代理IP,选择爬虫的方式也很重要,分布式爬虫能够让我们有效完成工作,深受广大爬虫工作的喜爱。
大客户
微信
置顶