首页 > 数据库 >Day21 21.2:CrawlSpider-redis分布式爬虫

Day21 21.2:CrawlSpider-redis分布式爬虫

时间:2023-02-22 12:33:17浏览次数:51  
标签:21.2 CrawlSpider 数据库 redis 调度 scrapy key 分布式

CrawlSpider-redis分布式

  • 分布式在日常开发中并不常用,只是一个噱头!

  • 概念:

    • 可以使用多台电脑搭建一个分布式机群,使得多台对电脑可以对同一个网站的数据进行联合且分布的数据爬取。
  • 声明:

    • 原生的scrapy框架并无法实现分布式操作!why?
      • 多台电脑之间无法共享同一个调度器
      • 多台电脑之间无法共享同一个管道
  • 如何是的scrapy可以实现分布式呢?

    • 借助于一个组件:scrapy-redis
    • scrapy-redis的作用是什么?
      • 可以给原生的scrapy框架提供可被共享的调度器和管道!
      • 环境安装:pip install scrapy-redis
        • 注意:scrapy-redis该组件只可以将爬取到的数据存储到redis数据库
  • 编码流程(重点):

    • 1.创建项目

    • 2.cd 项目

    • 3.创建基于crawlSpider的爬虫文件

      • 3.1 修改爬虫文件

        • 导包:from scrapy_redis.spiders import RedisCrawlSpider

        • 修改当前爬虫类的父类为 RedisCrawlSpider

        • class FbsSpider(RedisCrawlSpider):
          
        • 将start_urls替换成redis_key的操作

          • redis_key变量的赋值为字符串,该字符串表示调度器队列的名称

          • # start_urls = ["http://www.xxx.com/"]
            #redis_key的赋值为字符串,该字符串表示调度器队列的名称
            redis_key = '队列名称'
            
        • 进行常规的请求操作和数据解析

    • 4.settings配置文件的修改

      • 常规内容修改(robots和ua等),先不指定日志等级

      • USER_AGENT : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
        # Obey robots.txt rules
        ROBOTSTXT_OBEY = False
        
      • 指定可以被共享的管道类

        • ITEM_PIPELINES = {
              'scrapy_redis.pipelines.RedisPipeline': 400
          }
          
      • 指定可以被共享的调度器

        • # 使用scrapy-redis组件的去重队列
          DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
          # 使用scrapy-redis组件自己的调度器
          SCHEDULER = "scrapy_redis.scheduler.Scheduler"
          # 是否允许暂停
          SCHEDULER_PERSIST = True
          
      • 指定数据库

        • REDIS_HOST = '127.0.0.1'
          REDIS_PORT = 6379
          
    • 5.修改redis数据库的配置文件--redis数据库文件目录(redis.windows.conf)

      • 在配置文件中改行代码是没有被注释的:

        • bind 127.0.0.1
          #将上述代码注释即可(解除本机绑定,实现外部设备访问本机数据库
          
          如果配置文件中还存在:protected-mode = true,将true修改为false,
          修改为false后表示redis数据库关闭了保护模式,表示其他设备可以远程访问且修改你数据库中的数据
          
    • 6.启动redis数据库的服务端和客户端

      • CMD运行:redis-server和redis-cli
    • 7.运行项目,发现程序暂定一直在等待,等待爬取任务

    • 8.需要向可以被共享的调度器的队列(redis_key的值)中放入一个起始的url

标签:21.2,CrawlSpider,数据库,redis,调度,scrapy,key,分布式
From: https://www.cnblogs.com/dream-ze/p/17143946.html

相关文章

  • CrawlSpider(全站数据爬取)
    CrawlSpider(全站数据爬取)实现网站的全站数据爬取就是将网站中所有页码对应的页面数据进行爬取。crawlspider其实就是scrapy封装好的一个爬虫类,通过该类提供的相......
  • 4、Redis底层原理(持久化+分布式锁)
    Redis底层原理持久化Redis虽然是个内存数据库,但是Redis支持RDB和AOF两种持久化机制,将数据写往磁盘,可以有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久......
  • 部署堡垒机4——编译安装redis-6.0.9以上版本
    一、环境准备Redis官网:https://redis.io/历史版本:http://download.redis.io/releases/1、安装依赖yum-yinstallgccgcc-c++makecmakelrzsz复制2、解压re......
  • redis安装使用
    1、redis五大数据类型,开发必会的技能string字符串类型hash哈希类型,如同Python的dict(字典)Set无序集合Zset有序集合List双向列队,向右插入数据,向左,右提......
  • Redis一主多从哨兵模式
    首先配置一主多从示例如下:1、两台主机IP地址如下:主:192.168.3.81端口:6379从:192.168.3.82 端口:6379从:192.168.3.82 端口:6380  2、首先建立Redis数......
  • Redis IO多线程的简要测试结果
    RedisIO多线程的简要测试结果摘要最近想简单确认一下IO多线程的对吞吐量的提升情况.正好手头有鲲鹏的机器,所以想直接进行一下验证顺便用一下4216进行一下对比.......
  • redis数据类型-list类型
    字符串列表,按照插入的顺序进行排序,其底层是双向链表。常用场景简单队列评论列表/非实时榜单常用命令(https://try.redis.io/)lpush在列表头部插入元素llen获......
  • 三主三从的redis集群迁移数据到单节点redis上的操作步骤
    1.查看redis集群信息[root@database01~]#redis-cli-c-h192.168.0.164-p6379192.168.0.164:6379>authc2b9d063b86153fd9436fb07d8b3801d9ea40629964c422a22aac5a......
  • redis探秘:选择合适的数据结构,减少80%的内存占用,这些点你get到了吗?
    ​redis作为目前最流行的nosql缓存数据库,凭借其优异的性能、丰富的数据结构已成为大部分场景下首选的缓存工具。由于redis是一个纯内存的数据库,在存放大量数据时,内存的占用......
  • redis-命令操作-String&hash,list,set&sortedset,通用命令
    redis-命令操作-String&hashString类型存储:setkeyvalue获取:getkey删除:delkey  Hash类型存储:hsetkeyfieldvalue获取:hgetkeyfiled:获取指定的field对应......