首页 > 数据库 >scrapy-redis 用法举例 解析

scrapy-redis 用法举例 解析

时间:2023-07-14 16:15:06浏览次数:51  
标签:movie redis 爬虫 电影 scrapy 举例 Redis

 

scrapy-redis 是一个用于将 Scrapy 分布式爬虫与 Redis 数据库相结合的库,可以使得多个 Scrapy 爬虫实例共享爬取任务队列和爬取结果数据等信息。下面是 scrapy-redis 的用法举例:

安装 scrapy-redis:

pip install scrapy-redis  

 

假设我们要爬取豆瓣电影 TOP250 的电影信息,并将电影的名称、评分和导演等信息存储到 Redis 数据库中,我们可以按照以下步骤来实现:

1、创建一个 Scrapy 项目

scrapy startproject douban  

2、修改 settings.py 文件,启用 scrapy-redis:

# 启用 scrapy-redis 的调度器  
SCHEDULER = "scrapy_redis.scheduler.Scheduler"  
  
# 启用 scrapy-redis 的去重器  
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"  
  
# 启用 scrapy-redis 的 Redis 连接  
REDIS_URL = 'redis://localhost:6379'  

3、创建一个 Spider:修改 Scrapy 爬虫的 spider.py 文件,将爬虫类继承自 scrapy-redis 的 RedisSpider。

import scrapy  
from scrapy_redis.spiders import RedisSpider  
  
class DoubanSpider(RedisSpider):  
    name = 'douban'  
    redis_key = 'douban:start_urls'  
  
    def start_requests(self):  
        urls = [  
            'https://movie.douban.com/top250'  
        ]  
        for url in urls:  
            yield scrapy.Request(url=url, callback=self.parse)  
  
    def parse(self, response):  
        # 获取电影列表  
        movie_list = response.xpath('//div[@class="hd"]')  
        for movie in movie_list:  
            # 获取电影名称  
            name = movie.xpath('.//span[@class="title"]/text()').get()  
            # 获取电影评分  
            score = movie.xpath('.//span[@class="rating_num"]/text()').get()  
            # 获取电影导演  
            director = movie.xpath('.//span[@class="other"]/text()').get()  
            yield {  
                'name': name,  
                'score': score,  
                'director': director,  
            }  

4、运行 Redis 数据库:

命令行:

redis-server  

5、启动爬虫:

scrapy crawl douban  

以上代码实现了一个简单的分布式爬虫,它会将豆瓣电影 TOP250 的电影信息存储到 Redis 数据库中。在这个实例中,我们通过 RedisSpider 来继承 Redis 的调度器和去重器,使用 Redis 数据库来存储爬虫的任务队列和爬取结果数据。通过 scrapy-redis,我们可以方便地实现分布式爬虫,并提高爬虫的效率和稳定性。  

 

 

标签:movie,redis,爬虫,电影,scrapy,举例,Redis
From: https://www.cnblogs.com/avivi/p/17553968.html

相关文章

  • Rump迁移RedisDB至DB0
    下载Rump#wget下载包[root@ceshi-redis6~]#wgethttps://github.com/stickermule/rump/releases/download/0.0.3/rump-0.0.3-linux-amd64--2023-07-1414:34:20--https://github.com/stickermule/rump/releases/download/0.0.3/rump-0.0.3-linux-amd64Resolvinggithub.c......
  • Redis底层数据类型
    Redis底层基础数据类型1.SDS的定义structsdshdr{//记录buf数组中已使用的字节量//等于SDS所保存字符串长度intlen;//记录buf数组中未使用字节的数量intfree;//字节数组,用于保存字符串charbuf[];};1.2SDS与C字符串的区别1.2.......
  • scrapy用法举例 (Scrapy爬取豆瓣电影Top250)
    Scrapy是一个Python的爬虫框架,用于快速开发和部署Web爬虫。它提供了一套完整的爬虫工具,包括爬虫的调度、数据下载、数据处理和存储等功能,同时也支持多线程、分布式和异步IO等高级特性。以下是Scrapy的用法介绍:1.安装ScrapyScrapy可以通过pip安装,命令如下:pipinstal......
  • 项目中,redis被用在了哪些地方
    1、最常用用来当缓存使用,最常见缓存的是用户数据,毕竟基于springsecurity开发的话,默认的用户缓存方式就是直接jvm内存和外部缓存两种2、有些签到、排行榜功能会用,签到使用位图,因为用户数据量极大的时候用数据库记录存不太合适,签到数据也是几何倍数增长,但是其实数据库也能实现这......
  • springboot redis工具类之StringRedisTemplate 使用
    1、StringRedisTemplate是什么?StringRedisTemplate继承自RedisTemplate类,实现了BeanClassLoaderAware,Aware,InitializingBean,RedisOperations<K,V>接口。StringRedisTemplate是RedisTemplate以字符串为中心的扩展,由于针对Redis的大多数操作都是基于字符串的,因此此类提供了一个......
  • springboot中使用redis
    1、引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>2、配置spring:redis:host:localhost#Redis服务器地址port:6379......
  • Redis底层数据结构
    Redis是什么?Redis是一个键值数据库,以“快”著称Redis是为什么这么快?我们都知道Redis很快,它在接收到一个键值对数据后,能以微妙级别的速度找到数据并快速完成操作。数据库这么多,为啥Redis能有这么突出的表现呢?一方面,这是因为它是内存数据库,所有操作都在内存上完成,内存的访问速......
  • Redis学习指南
    基础资料官方下载、安装、运行redis中文站thelittleredisbook(中文版)Redis几个认识误区 redis作者宣言建模Fast,easy,realtimemetricsusingRedisbitmaps监控、配置RedisCommander (在线运行命令。强烈不推荐,会把浏览器搞死!)RedisLive redmon(★推荐支持监控......
  • 31. Redis分布式锁
    我是javapub,一名Markdown程序员从......
  • Redis压测工具(redis-benchmark)
    redis性能测试工具可选参数如下所示:redis性能测试工具可选参数如下所示:序号选项描述默认值1-h指定服务器主机名127.0.0.12-p指定服务器端口63793-s指定服务器socket4-c指定并发连接数505-n指定请求数100006-d以字节的形式指定SE......