
qq:800819103
在线客服,实时响应
qq群
在线客服,实时响应
客服电话
13318873961分布式ip代理池,可用率超高,赶快试试吧!历时大致两个月,到现在终于完成了高可用分布式代理IP池(https://github.com/SpiderClub/haipproxy),目前开源在了Github上。写这个项目的原因主要有两点,一是本人平时的部分工作需要和网络爬虫打交道,代理IP在有的时候还可以发挥非常重要的作用,调研过一些开源的代理IP采集程序,发现在爬取、解析、校验、资源调度等这些方面总有一些不尽人意的地方;二是和一个网友(不严格的说算得上是伯乐)的交流让小编有了关于使用Scrapy来写分布式网络爬虫的一些想法,正好还可以借助这个机会来尝试证实这些想法。
架构设计
这篇文章的目的是阐述haipproxy的主要架构和流程。该项目模块是
基于Scrapy和Redis的分布式网络爬虫,用作IP爬取和校验,对应于项目的crawler
基于Redis实现的分布式任务调度工具,对应于项目的scheduler和redis_util.py
Crawler分为代理爬取和校验,两者实现思想类似,主要使用Scrapy的spider_idle信号和DontCloseSpider异常来阻止Scrapy在没有数据的时候关闭,灵感来自scrapy-redis(https://github.com/rmax/scrapy-redis)。
启动调度器,包括代理网络爬虫调度器和校验网络爬虫调度器。调度器会读取rules.py中待爬取的网站,将其编排成任务存入各个任务队列中
启动各个网络爬虫,包括IP爬取和校验程序。项目中网络爬虫和调度器都是高可用的,还可以根据实际情况进行分布式部署,无需改动代码。由于本文的目标不是写成该项目的详细使用文档,所以省略了如指定启动网络爬虫类型和调度器类型的介绍
代理IP采集网络爬虫启动后会到对应的任务队列中获取任务并执行,再把获取到的结果存入一个init队列中
init队列由一个特殊的校验器HttpbinInitValidator进行消费,它会过滤掉透明代理,再把可用代理输入各个Validated队列中
调度器会定时从Validated队列中获取代理IP,再将其存入一个临时的队列。这里用一个临时队列是为了让校验更加公平,如果直接从Validated队列中获取资源进行校验,那么会增大不公平性
这时候各个校验器(非init校验器)会从对应的临时队列中获取待校验的IP并对其进行校验,此处省略校验细节
校验完成后再将其放回到Validated队列中,等待下一轮校验
请求成功率(体现为分数)、响应速度和最近校验时间满足settings.py所配置要求的代理IP将会被网络爬虫客户端所消费
为了屏蔽各个调用语言的差异性,目前实现的客户端是squid客户端,它还可以作为网络爬虫客户端的中间件
到此,整个流程便完了。
相关文章内容简介
1 分布式ip代理池,可用率超高,赶快试试吧!
分布式ip代理池,可用率超高,赶快试试吧!历时大致两个月,到现在终于完成了高可用分布式代理IP池(https://github.com/SpiderClub/haipproxy),目前开源在了Github上。写这个项目的原因主要有两点,一是本人平时的部分工作需要和网络爬虫打交道,代理IP在有的时候还可以发挥非常重要的作用,调研过一些开源的代理IP采集程序,发现在爬取、解析、校验、资源... [阅读全文]
最新标签
推荐阅读
18
2019-08
HTTP代理ip是怎么保护安全的
其实之前很少有人知道HTTP代理ip,随着互联网的发展,被越来越多的人熟知并使用,更是很多网络营销用户必不可少的工具。那么,HTTP代理ip是怎么保护安全的呢?
10
2018-12
数据来源于哪里?爬虫怎么采集数据?
很多企业的决策往往是根据数据决定的,那么这些数据来源于哪里?大家都知道爬虫可以大量的采集数据,那么爬虫怎么采集数据,如果获得大量的数据呢?这些数据都是公开的吗?
09
2018-10
换IP工具哪个比较好用?IP代理的功能是什么?
换IP工具哪个比较好用?你是否担心遇到这样的问题:店铺刷单太多造成被封的危险、网站发帖太多而导致IP地址被封的可能性、投票数不够而排名不好、网速不够而抢不到自己想要的物品。
27
2019-02
支持各种手机换IP的软件--黑洞代理
手机商家比较多,但主要使用的是Android以及ios系统,那么如果我们想在手机上更换IP,有没有适合这两个系统使用的换IP软件呢?还有,不同的手机类型,可以版本也是不太一样的,能不能兼容
热门文章