您的位置:首页 > 新闻资讯 >文章内容
分布式爬虫需要代理IP优化采集
来源:互联网 作者:admin 时间:2019-06-17 11:25:12

  分布式爬虫需要代理IP优化采集,因为技术人员在使用分布式爬虫,或是多进程爬虫的时候,目标一旦限制,很有可能会使用到代理IP。因此对于代理IP的寻找还是需要重视的。


  做爬虫使用的代理IP一定不能是开放的,一定要找高匿私密代理IP


  机灵代理—企业级稳定高匿代理IP


  机灵代理-- 企业级稳定、高速、高匿代理IP、千万IP出口池,爬虫的不二之选。


  怎么样才能最优化的使用代理IP进行数据采集呢?下面小编会提供一些思路,一般都会有这几种方式:


分布式爬虫需要代理IP优化采集


  推荐:【方案一】先导入数据库,从数据库里面取IP,大概逻辑如下:


  step1:在数据库里面建一个表,写一个导入脚本,每分钟请求60次API,把IP列表导入到数据库里面(接口返回的是实时可用的,百变IP会实时检测,你的检查肯定没有我们这边实时,如果接口里面没有而数据库里面有,则删除或者标记为不可用,反之则插入或者更新。)。


  step2:一定是每分钟请求60次,不要每分钟3次或者每分钟5次。知道为什么吗?比如一个IP的有效期从18:00:01分开始算有效期60秒,你18:00:00来请求的时候是拿不到的,当你18:00:20来拿的时候,它只剩下40秒了,就是有可能少20秒。


  step3:在数据库里面记录好 导入时间、IP、Port、过期时间、当前有多少进程在使用这个IP IP可用状态 等字段;


  step4:写一个抓取脚本,抓取脚本从数据库里面读取可用IP,每个进程从数据库获取一个IP,获取一个 状态可用,使用的进程少的IP,当然也可以控制每个进程只使用一个IP,如果没有符合条件的IP,则循环Sleep 1秒等待新的IP出现。


  step5:执行抓取,对结果进行判断,处理cookie等,只要出现验证码或者失败就放弃这个IP(在数据库里面标记为不可用或者直接删除,另外如果是标记为不可用的话,如果目标站只封1小时,那可以1小时以后如果接口里面又返回这个IP,那可以再标记为可用),重新换一个IP。


  机灵代理IP动态转发支持免提取调用。


  方式一:使用机灵代理IP,统一入口,支持免提取调用,设置白名单后即可使用,支持每次请求随机一个IP出口,或者多次请求使用同一个IP作为出口。


  通道A:proxy.hemaip.com:8000 每次随机一个出口IP。


  通道B:proxy.hemaip.com:8001~8020 这20个端口,每次请求都会固定一个出口IP,IP有效期1-5分钟。如果在请求之前想知道出口IP和剩余可用时间,可通过这个接口获取。


  通道A和使用B调用方式完全一样,不用做任何额外改造,只需要在程序中控制请求端口号就行了(比如你用通道B的8001端口,然后现在想换一个IP当出口,只需要换8002就好了,不需要发送换IP的命令给我们),超级方便,机灵IP会自动切换后端出


  下面是比较麻烦的方式,一般是不建议使用的


  【方案二】每个进程从接口API中随机取一个IP列表进行循环使用,如果失败则那么就再调用API获取,大概逻辑如下:


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


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


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


  方案二是最错误且最低效的办法,原因如下:


  我们知道每个IP都是有有效期的,当你取回来一个列表的时候,比如列表里面第一个IP有效期100秒,第二个有效期80秒,第三个110秒,第四个50秒,当你尝试第一个的时候比如一直成功用了50秒,然后被封,要换IP了,继续尝试第二个,这时候第二个有效期已经还剩余30秒了,第四个已经过期了。如果你设置HTTP请求的时候连接时间超时为3秒,读取时间超时为5秒,那你将会有可能浪费3-8秒的时间,说不定这3-8秒已经可以抓取几十次了。


  方案三能跑,但是小编也不是特别的建议大家用


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


  step1:每个进程(或线程),从接口随机取回一个IP来,用这个IP去访问资源,


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


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


  方案弊端:


  A、压力和效率:API调取十分频繁,会对机灵IP的接口造成压力,另外你调用的时候也会耗时比如每次耗时100ms,浪费时间,压力这个目前还好,我们的API直接用Nginx读取Redis,接口性能没有问题。


  B、资源竞争:比如你15个进程同时随机去取,例如我们IP池同时有30个可用,因为是随机取一个,所以不能保证两个或多个进程不取到同一个IP,这样频率高了,对方就有可能封这个IP。倒是可以调用接口的去重功能。


  C、遇到被封的IP,你也无法告诉API,下次不会给你返回被封IP了。当前API去重只能保证每天不重复。隔天是有可能重复的,因为有些IP当天被封,隔天说不定就可以用了,这些阈值还是使用方自己控制比较好。


  所以,尽可能做个策略,尽可能让每个进程(或线程)使用一个IP,不要多个进程使用一个IP。


  以上介绍了分布式爬虫需要代理IP优化采集,还提供了几个优化的思路,仅供大家参考下的。


相关文章内容简介
推荐阅读
  • 02 2020-01
    如何设计代理IP池呢?

    如何设计代理IP池呢?网络爬虫对于代理ip的消耗量一般十分巨大,如果我们没有准备足够数量的代理ip将会无法顺利的进行爬虫采集,想要快速方便的调用代理ip最好的方法就是自己搭建一个专属

  • 30 2020-07
    使用代理ip解决封号问题

    使用换IP软件中的大量不同的IP地址,这样切换IP之后,就不是同IP登陆了,自然就不会被平台认出导致账号被封的问题。这种情况常常出现在问答推广上,为什么呢?

  • 07 2020-02
    那种类型的代理ip最好

    我们都知道,代理ip有不同的类型,代理IP的类型分别是透明代理IP、匿名代理IP、高匿名代理IP、混淆代理IP。那么在实际应用中应该使用哪种代理ip?

  • 15 2019-10
    选用代理IP的好处以及注意事项

    互联网的技术不断在革新,技术与人们生活进行融合,带来了便利,其中代理IP也在人们的工作以及生活中派上用场。

  • 31 2019-10
    好用的代理IP怎么找?

    代理服务商现在能够在网络上找到很多,而且只是通过看他们的官网好像都差不多,不能够分辨出哪个是优质代理。机灵代理下面来为大家选择代理IP服务的时候,提供几点建议。

  • 24 2019-04
    找爬虫代理要关注IP数量、高并发、多终端

    找爬虫代理要关注IP数量、高并发、多终端,这三个方面,为什么呢?其实很多人购买爬虫代理时,都会把IP可用率作为购买第一参考因素。其实市面上的的IP资源基本都是租用代理拨号服务器,

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部