Scrapy Redis的使用
Scrapy Redis
Scrapy Redis是Scrapy框架基于redis分布式的一个组件,用于在分布式环境下使用Redis作为共享的调度器和去重器。它可以让多个Scrapy爬虫共享同一个Redis数据库,从而实现高效的分布式爬取。
GitHub地址:https://github.com/rmax/scrapy-redis
主要特点
基于Redis的去重机制:通过将URL哈希值存储在Redis中,实现对重复URL的过滤
基于Redis的调度器:将爬虫任务队列存储在Redis中,实现多个爬虫的调度
支持多个Spider同时运行:通过为每个Spider分配一个独立的Redis key,实现多个Spider同时运行,互不干扰
支持分布式部署:可以将多个Scrapy爬虫部署在不同的服务器上,通过共享同一个Redis数据库来实现分布式爬取
基本使用
安装Scrapy-Redis库
pip install scrapy-redis
定义DemoItem数据模型
在items.py文件中定义DemoItem数据模型对象
import scrapy
class DemoItem(scrapy.Item):
# 标题
title = scrapy.Field()
# 数量
count = scrapy.Field()
# 创建时间
create = scrapy.Field()
# 爬虫名称
spider = scrapy.Field()
定义分布式爬虫
使用Scrapy Redis提供的RedisSpider类来替代普通的Spider类。RedisSpider会自动从Redis队列中获取待爬取的URL,并将URL哈希值存储在Redis中,实现去重。
这个Spider会从Redis队列
myspider:start_urls
中获取待爬取的URL,并使用Scrapy Redis的去重机制去重。在分布式环境中,可以将同一个Redis队列myspider:start_urls
共享给多个Scrapy爬虫,从而实现分布式爬取。
from scrapy_redis.spiders import RedisSpider
from scrapy_project.items import DemoItem