惊不惊喜!树莓派自研分布式爬虫系统系统——已用于公司项目 学习资源 无合适标签 原创

l4537459 2019-11-26 10949

利用树莓派做采集节点,随便找个有网的地方插上电跟网线,会自动进行主动式爬虫。目前已经用在公司项目上,开源公司肯定不同意的,不过设计思路可以拿出来,哈哈。


先自我介绍下,学python开发一年半,之前没有任何开发经验,全是自学,对拉,我在公司不是开发工程师,是存储专员(跟开发八辈子搭不上边),至于为什么要给公司开发这个,因为有奖励,哈哈,所以忘各位大佬勿喷水平太烂。 > > 做开发果然容易白头发,本职工作不做开发果然是英明的选择。 


5月份开始动手,8月份基本完成。然后发现开源好用的Crawlab,我已经哭晕在厕所。 


开发理念 

1. 公司要求成本一扣在扣,最后结算成本。

IP代理每月600  *  12,阿里云服务器2000一年,树莓派4(2G内存)4个,400*  * 4,搞定,一个分布式爬虫系统。一年采集成本1万出头。终于,公司满意拉,我头发白拉。


 ### 设计方案 


 1. 所有节点采用容器的方式,每个树莓派启动6-8个容器不等,每个容器内封装一个主程序,程序内控制scrapy采集脚本的启停操作,在web页面上也可以控制启动停止,一个容器节点可以运行多个脚本。每个脚本主动向redis请求采集。 当爬虫出现关键性异常时,自动暂停所在容器的脚本,防止资源浪费。


 2. 容器节点内对redis-scrapy进行高度定制化,内部已封装selenium及pyppeteer,可以实现requests及浏览器采集。scrapy内部中间件,进行定制自动启停操作,监控脚本运行信息,采集完成后自动提交采集信息到数据库内。 


 3. web肯定是用django+django-celery,修改django-celery源码,适配公司采集需求。 


 4. 脚本自动更新,把脚本打包发送到web平台,自动对所有节点脚本进行更新。 


5. 整套系统redis是核心,所有信息都经过redis进行流转,对外只开放web接口和redis数据库的接口给采集节点访问,所有的web对外接口每个类型定义一个apikey,这个之间互不通用,apikey通过时间进行加密。redis数据库密码设置到变态级,貌似安全上没有太大的问题。


6.服务端内所有程序全部采用容器化,代理IP采集节点,数据清洗节点,心跳节点,调度任务节点,mongodb节点,mysql节点,django节点,全部拆分启动。 


7.数据存储节点,主要作用是将采集到的信息从redis实时存入数据库,在存储过程中并进行少量数据处理。并在每天晚上12点对所有数据进行pandas数据整理,清洗,供前端业务系统使用。


8.话说我有个不成熟的设想,现在爬虫法这么严厉,为呢规避风险,我把树莓派全部连接公共的免费网络,代理IP购买全部通过国外代理跳转购买,用户密码身份证全部匿名,调度中心放到国外的服务器上,等于就算我爬挂拉拉对方的服务器,对方想要取证定位到貌似难度不是一般的高,有没有这个必要?????


细节方面 有空再写,上图

 

最新回复 (36)
  • shun 6月前
    0 37
    楼主看哪里的教程学的?
  • waihui 10月前
    0 36
    强啊 铁汁
  • l4537459 2020-1-12
    0 35
    bryce 请问短信验证码接收是怎么实现的?
    安卓手机端有个tasker
  • bryce 2020-1-9
    0 34
    请问短信验证码接收是怎么实现的?
  • kangkang 2020-1-7
    0 33
    大佬厉害,啥时候出个简易教程看看呀?
  • clark1203 2020-1-2
    0 32
    树莓派docker版本和安装分享一波?
  • gusong125 2019-12-15
    0 31
    膜拜大神
  • 0 30
    mark , 这要好好学习,研究一下
  • duhongyu 2019-12-11
    0 29
    最近也在开发分布式管理系统,跟老哥的相比还是弱了几个档次,爬虫分布式其实不难写,关键在于怎么做统一标准化以及可复用的管理系统,要求扩容性要高,而且抗风险能力要达到MAX,不然一个环节出问题,其他环节就雪崩了,本身爬虫就是个比较复杂的东西,现在再耦合上管理系统就需要强悍的架构能力了!
  • 序列号 2019-12-9
    0 28
    突然想买树莓派了
  • pider 2019-12-4
    0 27
    老哥,好强悍呀。
    开了眼界了,实名感谢
  • L9527 2019-12-3
    0 26
    握X,牛X啊!!!
  • chad 2019-12-3
    1 25
    强,膜拜大神
  • 牧羊人 2019-12-2
    0 24
    厉害--我觉得我这2年 白过了
  • Damn7Kx 2019-12-2
    0 23
    牛批啊
  • YRyanQ 2019-11-27
    0 22
    楼主有联系方式吗?  咨询个问题
  • 0 21
    l4537459 果然是大神,就是为拉方便管理,因为几个树莓派根本不在一个地方,全部分开放的,甚至我家都放拉一个,所有操作需要web页面管理,所有树莓派里面的节点必须做到所有操作对接到web平台, 至于反爬经常更新的 ...
    哈哈 不是大神 支持支持
  • 七仔 2019-11-27
    0 20
    老哥,为何你这么秀
  • jayzau 2019-11-27
    1 19
    家里吃灰的树莓派看到你这篇文章估计都要跳起来捶我了
  • l4537459 2019-11-27
    2 18
    挖掘机小王子 感觉也是大多数精力花在管理和展示上了,感觉对待反爬不严重的网站还好,如果网站经常更新,感觉有点麻烦,感谢分享
    果然是大神,就是为拉方便管理,因为几个树莓派根本不在一个地方,全部分开放的,甚至我家都放拉一个,所有操作需要web页面管理,所有树莓派里面的节点必须做到所有操作对接到web平台,  至于反爬经常更新的问题,这是大部分爬虫都经历的问题,,所有定制脚本异常告警到web平台,一旦反爬机制更新,就在本地修改脚本,在本地测试后,上传到web平台,树莓派内的节点全部自动更新脚本。所以这个本质上是一个脚本管理平台。
  • 0 17
    非牛 绝大多精力花费在管理和展示上了
    感觉也是大多数精力花在管理和展示上了,感觉对待反爬不严重的网站还好,如果网站经常更新,感觉有点麻烦,感谢分享
  • zengyd 2019-11-27
    0 16
    不得不说 感觉自己自己根本算不上爬虫
    甚至0.1个都不算。。。我先去厕所哭会
  • 0 15
    你怎么穿品如的衣服啊
  • 0 14
    不得不说 感觉自己自己根本算不上爬虫
  • 星过无痕 2019-11-27
    0 13
    这里厉害啊,,架构有点复杂,想起来我还有个上灰的树莓派了
  • xianyuplus 2019-11-26
    0 12
    又想骗我买树莓派
  • teacntr 2019-11-26
    0 11
    这个也太强了吧,我也想弄个这样的,就是太复杂了
  • xxlife 2019-11-26
    0 10
    老哥,这招很骚啊!牛皮!
  • sfhfpc 2019-11-26
    0 9

    我大体看了一圈,阿里云服务器作为总调度中心和展示网站,树莓派承载爬虫,是这样吗?

    接着根据需求围绕分布式爬虫增加了很多的功能,例如监控之类的。

    思路清晰,动手能力强,我喜欢。

  • 0 8
    太强了,我也想搞块树莓派玩
  • 我更强了 2019-11-26
    0 7
    感谢,楼主厉害
  • YRyanQ 2019-11-26
    0 6
    不明觉厉
  • 非牛 2019-11-26
    0 5
    绝大多精力花费在管理和展示上了
  • dean 2019-11-26
    0 4
    redis在server?树莓派远程连redis?有点危险哦。手机验证码和帐密登陆是为了解决什么呢?如果是爬虫接入,使用token是不是更加简单方便?这个可能我没有理解清楚。
  • qinless 2019-11-26
    0 3
    还有这种骚操作,学到了学到了
  • 小飞刀 2019-11-26
    0 2
    第一
返回