第14章 分布式爬虫
第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的对接
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Qin Blog!