37回答

22收藏

惊不惊喜!树莓派自研分布式爬虫系统系统——已用于公司项目

信息分享 信息分享 21662 人阅读 | 37 人回复 | 2019-11-26


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




先自我介绍下,学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购买全部通过国外代理跳转购买,用户密码身份证全部匿名,调度中心放到国外的服务器上,等于就算我爬挂拉拉对方的服务器,对方想要取证定位到貌似难度不是一般的高,有没有这个必要?????




细节方面
有空再写,上图
























分享到:
回复

使用道具 举报

回答|共 37 个

小飞刀

发表于 2019-11-26 17:26:14 | 显示全部楼层

第一
回复

使用道具 举报

qinless

发表于 2019-11-26 17:27:48 | 显示全部楼层

还有这种骚操作,学到了学到了
回复

使用道具 举报

dean

发表于 2019-11-26 17:39:42 | 显示全部楼层

redis在server?树莓派远程连redis?有点危险哦。手机验证码和帐密登陆是为了解决什么呢?如果是爬虫接入,使用token是不是更加简单方便?这个可能我没有理解清楚。
回复

使用道具 举报

非牛

发表于 2019-11-26 17:43:45 | 显示全部楼层

绝大多精力花费在管理和展示上了
回复

使用道具 举报

YRyanQ

发表于 2019-11-26 18:07:17 | 显示全部楼层

不明觉厉
回复

使用道具 举报

我更强了

发表于 2019-11-26 18:21:34 | 显示全部楼层

感谢,楼主厉害
回复

使用道具 举报

路过的憨憨

发表于 2019-11-26 19:28:58 | 显示全部楼层

太强了,我也想搞块树莓派玩
回复

使用道具 举报

sfhfpc

发表于 2019-11-26 19:39:40 | 显示全部楼层

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

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

![](https://bbs.nightteam.cn/upload/images/201911/19_39_30_67432)

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

使用道具 举报

xxlife

发表于 2019-11-26 21:59:28 | 显示全部楼层

老哥,这招很骚啊!牛皮!
回复

使用道具 举报