Python爬虫理论 | (9) Scrapy分布式爬虫

目录

 

1. 分布式爬虫原理

2. Scrapy-redis

3. 分布式环境搭建

4. 实战


1. 分布式爬虫原理

分布式爬虫是将多台主机组合起来,共同完成一个爬取任务。

Scrapy单机爬虫中有一个本地爬取队列Queue。如果新的Request生成就会放到Queue里面,随后Request被Scheduler调度。之后,Request交给Downloader执行爬取。

  • 单机爬虫:一个Scheduler

  •  分布式爬虫:多个Scheduler

维护爬取队列queue:在多台主机上同时运行爬虫任务协同爬取的前提就是共享爬取队列。各台主机不需要各自维护爬取队列,而是从共享爬取队列存取Request。但是各台主机还是有各自的Scheduler和Downloader,所以调度和下载功能分别完成。维护爬取队列首先考虑性能问题,采用基于内存存储的Redis,支持多种数据结构,例如列表(List)、集合(Set)、有序集合(Sorted Set)等,存取的操作也非常简单。

  •  去重

Scrapy有自动去重功能,它的去重使用了Python中的集合。这个集合记录了Scrapy中每个Request的指纹,所谓指纹实际上就是Request的散列值。

request_fingerprint()就是计算Request指纹的方法,其方法内部使用的是hashlib的sha1()方法。计算的字段包括Request的Method、URL、Body、Headers这几部分内容,只要这些有一点不同,则计算结果就不同。计算得到的结果是加密后的字符串,也就是指纹。每个Request都有独有的指纹,指纹就是一个字符串,判定字符串是否重复比判定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值