您的位置:首页 > 数据库 > Redis

scrapy-redis 介绍

2017-08-20 16:38 197 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: