scrapy-redis 介绍

来源:互联网 发布:淘宝怎么找内部优惠券 编辑:程序博客网 时间:2024/06/01 07:21

1.介绍
scrapy是一个爬虫框架,但是不支持分布式。scrapy-redis在scrapy的基础上,更方便地实现了分布式。
scrapy-redis提供了下面四种组件(component):(四种组件意味着scrapy的四个模块都要修改)
Scheduler
Duplication Filter
Item Pipeline
Base Spider
这里写图片描述
Schedular:
改造了python本来的collection.deque(双向队列),改用自己的redis来存放请求信息替代队列。
{
优先级0:队列0,
优先级1:队列1,
优先级2:队列2
}
scheduler根据requests根据优先级,来决定该入哪个队列。

Duplication Filter
Scrapy 中用集合实现这个request去重功能,Scrapy中把已经发出去的requests生成指纹,放入到一个redis的set中。

Item Pipeline
引擎将(Spider返回的)爬取到的Item给 Item Pipeline,scrapy-redis的Item Pipeline将爬取到的Item存入redis的items queue。
修改过的Item Pipeline 可以很方便的根据key从items queue提取item,从而实现 items processes集群

Base Spider
不在使用scrapy原有的Spider类,重写的RedisSpider继承了Spider和RedisMixin类,RedisMixin是用来从redis中读取url类的。

当我们生成一个Spider继承RedisSpider时,调用setup_redis函数,这个函数会去连接redis数据库,然后设置signal(信号):

  • 一个是当spider空闲时候的signal
  • 一个是当抓到item时的signal
原创粉丝点击