第14章 分布式爬虫

分布式爬虫的原理,以及Scrapy是实现分布式爬虫的流程。

14.1 分布式爬虫原理

14.1.1 分布式爬虫架构

本地爬取队列Queue deque模块

Scheduler

Downloader

分布式爬虫基本架构

14.1.2 维护爬取队列

基于内存存储的Redis,它支持多种数据结构,

14.1.3 如何去重

scrapy自动去重

14.1.4 防止中断

14.1.5 架构实现

首先实现一个共享的爬取队列,还要实现去重的功能。
另外,重写一个Scheduler的实现,使之可以从共享的爬取队列存取的Request。

Scrapy-Redis 源码解析。

14.2 Scrapy—Redis源码解析

利用Redis如何实现Scrapy分布式。

14.2.1 获取源码

14.2.2 爬取队列

queue.py

14.2.3 去重过滤

duperfilter.py, 其内部实现了一个RFPDupeFilter类

14.2.4 调度器

Scrapy-Redis还帮我们实现了配合Queue、DupeFilter使用调度器Scheduler,源文件名称是scheduler.py。

enqueue_request()可以向队列中添加Request、,核心操作是调用Queue的push操作

14.2.5 总结

三个分布式问题解决了

  • 爬取队列的实现
  • 去重的实现
  • 中断后重新爬取的实现

14.2.6 结语

Scrapy-Redis的核心源码解析。
Scrapy-Redis中还提供了Spider、Item Pipeline的实现

14.3 Scrapy分布式实现

14.3.1 准备工作

14.3.2 搭建Redis服务器

14.3.3 部署代理池和Cookies池

14.3.4 配置Scrapy-Redis

14.3.5 配置存储目标

14.3.6 运行

14.3.7 结构

使用RedisDesktop观察远程Redis数据库的信息。

14.4 BloomFilter的对接