scrapy分布式爬虫

scrapy_redis是为了解决scrapy框架不支持分布式爬取的问题,它提供了基于redis的组件。工作原理包括调度器将URL上传给scrapy_redis组件进行去重和分发,客户端下载数据后,pipeline将数据存入redis数据库。主要组成部分有Scheduler、Duplication Filter和Item Pipeline。示例中展示了如何创建分布式爬虫,用于抓取图书信息。
摘要由CSDN通过智能技术生成

scrapy_redis

scrapy是一个通用的爬虫框架,但是不支持分布式,scrapy_redis是为了更方便的实现scrapy分布式爬取,而提供了一些以redis为基础的组件(仅有组件)。

scrapy_redis工作原理:
  1. 调度器将不再负责Url的调度,而是将url上传给scrapy_redis组件,由组件负责组织、去重
  2. redis组件会通过指纹(key)来进行去重操作,并且把请求对象分发给不同的客户端
  3. 客户端拿到请求对象后,再交给引擎–下载器
  4. pipeline不再负责本地化操作,而是把数据交给redis组件来负责写入redis数据库,达到资源共享、自动合并的目的
scrapy_redis组成:

Scheduler 调度器,scrapy本身不支持爬虫分布,scrapy_redis的解决是把这个scrapy queue换成redis数据库(也是指redis队列),从同一个redis-server存放要爬取的request,便能让多个spider去同一个数据库里读取。

Duplication Filter 指纹过滤器,scrapy用集合实现这个request去重功能,scrapy中把已经发送的request指纹放到一个集合中,把下一个request的指纹放到集合中比对,如果该指纹存在于集合中,说明这个request发送过了,如果没有则继续操作。

Item Pipeline 管道,引擎将(spider返回的)爬取到的item给Item Pipeline,scrapy_redis的Item Pipeline将爬取到的item存入redis的items pipeline。

Base Spider

分布式爬虫例子(爬取读书网的图书名称和封面图片链接,常规设置或者不需要修改的部分代码就没贴了):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值