【备注】:《七哥说道》系列文章由博主的北漂经历改编而成,内容真实,文中观点仅代表个人拙见。
看过前面文章的人,应该知道我是一个java web开发,是个自学了一段时间就出来找工作的菜鸡,哈哈哈!
新公司里面的项目周期比较长,毕竟都是安全一类的项目,公司一直苦于数据采集类的工作,反反复复的造轮子,胡哥召集我们开会说计划开发一个通用采集平台,之后对各个项目组做数据支撑,毕竟很多的项目都涉及到各种各样的数据采集需求。在来这家公司之前,我曾了解过一点爬虫相关的知识,也就是点皮毛的水平,能写个请求拿一下页面的感觉。
接触爬虫的朋友可能都知道,爬虫大概是干什么的,简单的来说就是,“互联网上存在很多各种各样的数据,像是企业工商信息,裁判文书数据,各种岗位的人员信息,人物动态信息,网站公告数据等等,这些数据都是可以看见的。现在就好比你手上有一千个公司的名称,你想要知道这些公司的法人都是谁,有没有涉及到法律诉讼。那么你可以去对应的网站,挨个输入搜索,然后复制,粘贴,怎么的也得一天吧!而爬虫就恰好可以解决这个问题,写个程序,替代你手动输入,复制,粘贴,去帮助你整理这些数据,甚至还可以给你来个分析报告!”
关于通用采集平台,大家的设想有点类似于现在的数据中心概念,就是运行一套分布式采集系统,做采集任务管理,数据管理,提供各个项目组账户直接下发采集任务,对接采集数据。这样一来,每个项目中涉及到的数据采集需求,就不需要专门的安排人开发了,也避免了代码的冗余。另外云采集系统需要做到通用性,就是说操作简单,做任务下发的时候不需要繁琐的操作,简单的来说,就是没有开发经验的人也可以使用采集系统完成任务下发,采集到数据。可是当时组里爬虫这方面专业的的人很少啊,只有胡哥和刘哥,刘哥还有一堆项目忙着,肯定是没有时间和我一起开发了,所以就是胡哥带着我们几个麻瓜开发了。
刚开始没有思路,不知道怎么实现,就调研了好几个类似的采集网站,像国外的import.io,国内的八爪鱼采集器,造数采集,神箭手采集等等,他们的程序我都去分析过!最后我们选择了多种方式结合采集的方式,为什么这么说呢!可能玩过爬虫的人都知道,互联网的数据形式是各种各样的,有的数据简单发起一个get/post请求就可以拿到,而有的数据则可能需要携带cookie模拟,登录,多次请求,另外复杂的还可能涉及到对抗,代理IP,破解加密,脚本,行为模拟,验证码等等,这个比较敏感,水也比较深,这里就不探讨了。
所谓的多种方式结合采集就是采集终端枚举多种类数据获取方式,做差别化开发,按照采集方式提供服务,主体设计划分为三部分:任务配置器,任务调度器,采集终端。配置器前端提供统一任务下发方式,这里采用js开发了一套操作监控,用来记录用户在浏览器上的操作,当然也提供了一些自动识别数据的操作流程。配置器后端获取操作记录后生成采集脚本,也就是对采集动作的自定义执行链,提交调度器。调度器会对采集任务进行拆分,按照类型进行多终端分发。采集终端根据接收到的任务指令,执行采集,任务状态上报,数据上报存储等。值得一提的是,针对有些比较难搞的任务,我们利用phantomjs开发了一套浏览器爬虫采集器,嵌入在采集终端,避免了有些任务js请求过多导致任务下发困难。
PS:简单点说,浏览器爬虫就是与我们普通用户平时使用的浏览器差不多,但是它没有界面,所有的动作都是通过命令调用。另外,互联网上的很多资源,查阅的时候有限制,如登录、token校验,分段传输、异步加载等,这时候就突出浏览器爬虫的优势了,还可以显示的去执行某段js,但是浏览器爬虫这玩意也有一堆的坑(这里的故事太多了),就不细说了!
是的,你没有看错,我从一个web开发工程师开始搞起了爬虫,那时候刚接触,什么都不太懂,问题简直不要太多哦!尤其还是这种要给普通用户提供采集功能的爬虫,NM,这个javascript也太难了吧,该怎么写啊,怎么监控用户的动作啊,提供给用户配置任务的界面还要显示和原网页相同的样式,用户的操作我还要转换成服务端的采集脚本,还要实现分布式,脚本拆解执行,任务数据存储汇总,任务监控调度,我太难了,各种问题。另外项目一边开发,还要一边投入应用,需要给项目那边提供数据支持。虽然问题很多,但是大家还是一起攻坚克难的,逐步解决了,最后采集中心在好几个项目中终于应用了起来,给他们提供数据支撑。
也是因为这个项目,我开始半路出家接触了爬虫,我想说都是被逼的,掩面哭泣,我都不知我还能搞起爬虫来!(PS:我现在弄得杂了,不搞爬虫了)另外,我发现公司里面很多项目上的工作都有一个特点,就是没有行不行,不行也是你了,任务交给你,你想办法解决吧!哈哈,程序员的世界,谁还不是被逼着成长了,年轻人,我比较建议你们去这样的公司,挑战永远不会少,技术与经验也会是水到渠成。
这是我和很多朋友交流时,领悟到的,那些敢于面对未知挑战的人,最后都进步的很快,相反可能是原地踏步。
【话外】:最近闹得沸沸扬扬的莫过于,“程序员写了一段爬虫,大数据公司200多人被一锅端” 的新闻了,新闻一出,爬虫界顿时风声鹤唳,人心惶惶,很多人都说自己很有可能是在面向监狱编程。
所以,我想大家最好也对什么样的爬虫违法,有一个清醒的认识!
如果爬虫程序采集到公民的姓名、身份证件号码、通信通讯联系方式、住址、账号密码、财产状况、行踪轨迹等个人信息,并将之用于非法途径的,则肯定构成非法获取公民个人信息的违法行为。除此之外,根据相关规定,对于违反国家有关规定,向他人出售或者提供公民个人信息,情节严重的,窃取或者以其他方法非法获取公民个人信息的,均可构成成“侵犯公民个人信息罪”,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。
重点关注:下列情况下,爬虫有可能违法,严重的甚至构成犯罪。
一、爬虫程序规避网站经营者设置的反爬虫措施或者破解服务器防抓取措施,非法获取相关信息,情节严重的,有可能构成“非法获取计算机信息系统数据罪”。
二、爬虫程序干扰被访问的网站或系统正常运营,后果严重的,触犯刑法,构成“破坏计算机信息系统罪”。
三、爬虫采集的信息属于公民个人信息的,有可能构成非法获取公民个人信息的违法行为,情节严重的,有可能构成“侵犯公民个人信息罪”。
阿弥陀佛,七哥早已退出爬虫界了,否认三连,我不是,我没有,别瞎说,我啥也不知道,哈哈哈!