继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

分布式爬虫使用代理IP的几种方案

慕粉8253601
关注TA
已关注
手记 3
粉丝 1
获赞 3

没有代理IP的辅助,爬虫工作真的很难做。所以绝大部分的爬虫工程师都会去购买稳定高效安全的IP代理。有了高质量的代理IP之后,就能保障以后就没有麻烦了呢?如果真的这么简单,是个人都能做爬虫工程师,何必这么麻烦。他还需要做优化方案,资源的合理分配,提高工作效率,更加稳定快速的解决爬虫工作的问题。下面河马IP代理给大家介绍一下

没有代理IP,爬虫工作将寸步难行,所以很多爬虫工程师都需要去选购高效稳定的代理IP。有了优质代理IP后,是不是就可以高枕无忧了呢?事情没有那么简单,还需要优化方案,合理分配资源,提高工作效率,更高效更快速更稳定的进行爬虫工作。下面一起来看看分布式爬虫使用代理IP的几种方案!

分布式爬虫使用代理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。

注意事项:

第三种方案有效的避开了代理服务器资源的消耗,有效的分配爬虫代理的使用,更加的高效和稳定,保障了爬虫工作的持久性和稳定性。


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP