飞道的博客

如何实现分布式爬虫代理IP?怎么办?

422人阅读  评论(0)

没有代理IP,爬虫工作将寸步难行,所以很多爬虫工程师都需求去选购高效稳定的代理IP。有了优质代理IP后,是不是就能够万事大吉了呢?事情没有那么简单,还需求优化计划,合理分配资源,进步工作效率,更高效更快速更稳定地停止爬虫工作。

计划一、每个进程从接口API中随机取一个IP列表来循环运用,失败则再调用API获取,大约逻辑如下:

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

2、假如访问胜利,则继续抓取下一条;

3、假如失败了,再从接口取一批IP,继续尝试。

计划缺陷:每个IP都是有有效期的,假如提取了100个,当运用了第10个的时分,可能后面的大局部都失效了。假如你设置HTTP恳求的时分衔接时间超时为3秒,读取时间超时为5秒,那你将会有可能糜费3-8秒的时间,说不定这3-8秒曾经能够抓取几十次了。

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

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

2、假如访问胜利,则继续抓下一条;

3、假如失败l,再从接口随机取一个IP,继续尝试。

计划缺陷:调用API获取IP的行为十分频繁,会对代理效劳器形成十分大的压力,影响API接口稳定,可能会被限制提取。这种计划也不合适,不能耐久稳定的运转。

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

1、在数据库里面建一个表,写一个导入脚本,每分钟恳求几次API(咨询代理IP效劳商倡议),把IP列表导入到数据库里面;

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

3、写一个抓取脚本,抓取脚本从数据库里面读取可用IP,每个进程从数据库获取一个IP停止运用;

4、执行抓取,对结果停止判别,处置cookie等,只需呈现考证码或者失败就放弃这个IP,重新换一个IP。

这种计划有效地避开了代理效劳器资源的耗费,有效地分配代理IP的运用,愈加的高效和稳定,保证了爬虫工作的耐久性和稳定性。


转载:https://blog.csdn.net/ipiohiuhn/article/details/113696887
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场