第十五章 分布式爬虫
网络爬虫是偏向于 I/O 的任务,实现分布式爬虫相比于分布式运算或者分布式存储要简单的多,也正是这个简单,让分布式成为了爬虫工作之中的一个高频词汇。但我们要明确有点,分布式只是提升爬虫功能与效率的一个环节而已,只有在任务量很大的时候,分布式才会凸显优势。
一般情况下,一个优秀的单机爬虫已经可以满足大部分需求,所以我们在进行工作之前,要合理评估自己的目标。要知道分布式并不是爬虫的本质所在,爬虫的本质在于网络请求与数据处理,如何稳定地访问网页并获取数据,如何精确地提取出高质量的数据,才是核心问题。
1. 分布式爬虫的动机
对于分布式,大致来说,就是需要处理的数据量太大,任务太多,单主机难以处理,或者效率极低,需要多台机器共同协作(而不是孤立地各做各的,所以需要通信),最后所有机器完成的任务汇总在一起,完成大量任务。
具体到爬虫,分布式还有一个动机,就是以机器换速度。有的网站反爬措施很严格,我们必须得放慢爬取速度,这种情况下只靠单主机的速度肯定是无法容忍的。但是对于分布式爬虫,每一个机器的代理都可以有不同的IP或者帐号cookie,都以很慢的速度在爬,当并行任务多了之后,总体上的速度就很可观。
2. 分布式爬虫要点
- 任务的统一调度
- 任务的统一去重
- 数据存储的优化
- 爬取速度的调节
- 支持"断点续爬"
- 足够健壮下,实现起来简单方便(代码编写,部署与更新)
- 其他