引言
数据采集是数据科学中很重要的一部分,数据采集看上去容易,但是实际做起来,想要做好,很难。因为我们要面对的是不同的目标网站,获取的数据形式,获取频率,获取方式也千差万别。
比如如果你做的是一个大学的课程作业,或是需要帮助导师抓取一些数据,比如论坛数据,美食网站数据,那么这种爬虫往往只需要执行一次即可,他的目标是尽量快,尽量完整的保存下数据,工程量尽量的小,这个时候你需要的完成并不多,只需要“抓下来就好”。
但是如果你是在一个企业中以一个爬虫工程师的身份进行数据采集时候,你就需要考虑很多了:
这个爬虫是阶段性的项目需要还是大数据平台需要?
爬虫的种子列表如何传入?
爬虫是每天定时运行?还是根据外部程序调度执行?
爬虫的存储方式是使用Execl即可方便业务人员分析?还是需要存储在结构化数据库进行展示?亦或是需要接入到消息中间件如kafka中?
如何监控你的爬虫正在抓取那些链接,还剩下那些链接等待抓取?
当你的爬虫程序达到十个甚至几百个时候,如何统一管理你的爬虫?甚至这些爬虫之间还有抓取顺序依赖时候,你如何衔接好爬虫Apipeline与爬虫B的调度?
这些都是我们在企业级爬虫中可能遇到的问题,除了这些以外,我们还要考虑到爬虫的可扩展性,是否支持分布式大规模抓取,可能还需要构建IP代理池以及每个目标网站的Cookie池....
那么这个系列,将以scrapy cluster为例,带着你一步步构建一个企业级的爬虫系统。
使用哪种爬虫工具?
说到爬虫,大家想到的常用工具有很多,比如java下的httpclient,WebMagic,Apache Nutch,python下的Pyspider,Scrapy,以及我们这个系列要讲的Scrapy cluster。
那么在构建企业级别的爬虫系统时候,需要用到那种工具呢?
一般来说,爬虫需求可以分为如下几类:
1.单目标网站,单页面抓取
这种页面一般是来自论坛或官网等数据&#x