您的位置:首页 > 新闻资讯 >文章内容
分布式代理IP池的构建
来源:互联网 作者:admin 时间:2019-06-11 14:37:55

  分布式代理IP池的构建,很多人都尝试自己去构建的这个代理IP池的,只是由于获取的都是免费的代理IP,其代理IP池的效果不明显。今天我们就一起去看看这个分布式代理IP池的构建吧。


  基于Scrapy和Redis的分布式爬虫,用作IP抓取和校验,对应于项目的crawler


  基于Redis实现的分布式任务调度工具,对应于项目的scheduler和redis_util.py


  Crawler分为代理抓取和校验,两者实现思想类似,主要使用Scrapy的spider_idle信号和DontCloseSpider异常来阻止Scrapy在没有数据的时候关闭,灵感来自scrapy-redis。为了方便阐述,我画了一张包含各个组件的流程图,如下


分布式代理IP池的构建


  启动调度器,包括代理爬虫调度器和校验爬虫调度器。调度器会读取rules.py中待抓取的网站,将其编排成任务存入各个任务队列中


  启动各个爬虫,包括IP抓取和校验程序。项目中爬虫和调度器都是高可用的,可以根据实际情况进行分布式部署,无需改动代码。由于本文的目标不是写成该项目的详细使用文档,所以省略了如指定启动爬虫类型和调度器类型的介绍


  代理IP采集爬虫启动后会到对应的任务队列中获取任务并执行,再把获取到的结果存入一个init队列中


  init队列由一个特殊的校验器HttpbinInitValidator进行消费,它会过滤掉透明代理,再把可用代理输入各个Validated队列中


  调度器会定时从Validated队列中获取代理IP,再将其存入一个临时的队列。这里用一个临时队列是为了让校验更加公平,如果直接从Validated队列中获取资源进行校验,那么会增大不公平性


  这时候各个校验器(非init校验器)会从对应的临时队列中获取待校验的IP并对其进行校验,此处省略校验细节


  校验完成后再将其放回到Validated队列中,等待下一轮校验


  请求成功率(体现为分数)、响应速度和最近校验时间满足settings.py所配置要求的代理IP将会被爬虫客户端所消费


  为了屏蔽各个调用语言的差异性,目前实现的客户端是squid客户端,它可以作为爬虫客户端的中间件


  到此,分布式代理IP池的构建整个流程便完了。


  如果平时的部分工作需要和爬虫打交道,代理IP在有的时候可以发挥非常重要的作用,调研过一些开源的代理IP采集程序,发现在抓取、解析、校验、资源调度等这些方面总有一些不尽人意的地方。可以使用代理IP商的IP池,比如机灵代理的。


相关文章内容简介
推荐阅读
  • 10 2019-08
    代理IP从安全角度选哪种

    代理IP也分类别的,如果代理IP从安全角度选哪种?通常我们一般把代理IP分为四个类型,“透明代理,匿名代理,高匿代理,混淆代理”,代理IP从安全程度上来说,又将这四种代理类型的排序

  • 15 2020-01
    代理ip链接错误的原因

    用了代理IP,可以放心的做很多不可描述的事情了,但是使用代理后,发现没什么卵用,那可真是悲伤逆流成河。接下来就盘点下使用代理IP失败的情况以及原因有哪些?

  • 17 2019-06
    安卓手机无限换ip地址

    安卓手机无限换ip地址,这能不能实现啊!虽说之前都是电脑换IP的,不过手机换IP应该也是行的吧?现在大部分人都使用手机啦,尤其是安卓手机的。

  • 15 2019-06
    代理ip质量好坏的影响

    代理ip质量好坏的影响,大家有没有体会?如今在个网络时代,为了突破一些平台的某些限制,使用代理ip也是非常的正常,不过代理ip质量有差别的,这对项目有什么影响呢?

  • 26 2019-12
    怎样搭建爬虫代理池?

    怎样搭建爬虫代理池?python爬虫进行信息采集使用的事IP更改的方式,这样才能快速的进行信息的爬取。所以如果要大批量的进行信息的抓取就不可避免的使用IP池。针对python爬虫使用的代理IP池

  • 27 2019-06
    游戏设置代理IP怎么查看是否生效

    游戏设置代理IP怎么查看是否生效?玩游戏想要防止IP被封,使用代理IP更换IP地址是个好办法,不然被封个十天半个月的,非常影响玩游戏的心态不说,也错过了赚钱的机会。因此玩游戏使用代

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

大客户经理微信

微信公众号

微信公众号

回到顶部