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

Day21 21.2:CrawlSpider-redis分布式爬虫的更多相关文章

  1. 【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验

    一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...

  2. 【Python3爬虫】爬取美女图新姿势--Redis分布式爬虫初体验

    一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...

  3. 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询

    第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...

  4. 四十四 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询

    1.elasticsearch(搜索引擎)的查询 elasticsearch是功能非常强大的搜索引擎,使用它的目的就是为了快速的查询到需要的数据 查询分类: 基本查询:使用elasticsearch内 ...

  5. Scrapy+redis实现分布式爬虫

    概述 什么是分布式爬虫 需要搭建一个由n台电脑组成的机群,然后在每一台电脑中执行同一组程序,让其对同一网络资源进行联合且分布的数据爬取. 原生Scrapy无法实现分布式的原因 原生Scrapy中调度器 ...

  6. Python分布式爬虫打造搜索引擎完整版-基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站

    Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 https://github.com/mtianyan/Artic ...

  7. 爬虫07 /scrapy图片爬取、中间件、selenium在scrapy中的应用、CrawlSpider、分布式、增量式

    爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 目录 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy ...

  8. Python36 使用Redis 构建分布式爬虫(未完)

    很长时间未更新了,人懒了. 最近有不少的东西,慢慢写吧,最近尝试了一下python 使用Redis 来构建分布式爬虫: 单体爬虫有很多缺点,但是在学习过程中能够学习爬虫的基本理念与运行模式,在后期构建 ...

  9. 基于Python,scrapy,redis的分布式爬虫实现框架

    原文  http://www.xgezhang.com/python_scrapy_redis_crawler.html 爬虫技术,无论是在学术领域,还是在工程领域,都扮演者非常重要的角色.相比于其他 ...

  10. Golang分布式爬虫:抓取煎蛋文章|Redis/Mysql|56,961 篇文章

    --- layout: post title: "Golang分布式爬虫:抓取煎蛋文章" date: 2017-04-15 author: hunterhug categories ...

随机推荐

  1. 【面试题】面试官:请你实现一个深拷贝,那如果是正则/set/函数怎么拷贝?

    一.面试官灵魂三连问: 你知道哪些拷贝的方法? 让你实现一个深拷贝怎么实现? 那像正则.Set.Map.函数等如何拷贝? 二.浅拷贝方法 自己创建一个新对象,来接收你要重新复制或引用的对象值.如果对象 ...

  2. 2022-05-10内部群每日三题-清辉PMP

    1.项目经理管理的一个项目不断面临挑战.发起人经常无法做出决定,存在大量预算超支,团队成员不断从项目离职,高级管理层没有提供实际的支持.项目经理应该怎么做? A.与团队一起开会,以确定造成这些问题的原 ...

  3. etcdctl 安装与使用

    介绍 etcdctl是一个提供简洁命令的etcd客户端,使用etcdctl可以直接和etcd服务打交道,对etcd中的键值对进行增删改查. 安装etcdctl 下载etcdctl工具 下载地址:etc ...

  4. junit使用进阶

    一.模拟http请求测试接口 新建一个controller @RestController public class AATestController { @GetMapping("/tes ...

  5. Appium+RobotFrameWork测试环境搭建

    前提:搭建好robotframework环境 RF基于python2.7的版本实现的一套开源自动化测试框架 推荐使用Appium Desktop, 搭建Appium环境: 1. 搭建JDK 2. 搭建 ...

  6. netmiko批量操作华为设备

    from concurrent.futures import ThreadPoolExecutorimport timeimport netmikoimport osfrom threading im ...

  7. shm

    进程间共享内存访问及读写 目录 进程间共享内存访问及读写 1. 进程间共享内存相关linux_C函数 2. 进程间共享内存基本流程 3. demo code 1. 进程间共享内存相关linux_C函数 ...

  8. 阐述智能站变电站时钟同步系统(NTP时间同步服务器)的意义

    阐述智能站变电站时钟同步系统(NTP时间同步服务器)的意义 阐述智能站变电站时钟同步系统(NTP时间同步服务器)的意义 阐述观点只代表本人,如有疑问可加微 ahjzsz 1.概述 在现代电网中,统一的 ...

  9. Cendos中启动docker失败的问题

    注:在 Windows中使用Linux虚拟机中使用Cendos 刚开始安装Docker时没有任何错误, 但是在后续的docker启动过程中, 出现以下问题: 按提示使用 systemctl statu ...

  10. redis注册成windows服务步骤

    1.cmd命令切换到redis的安装目录 2.执行如下命令,将redis注册成为windows的服务 redis-server --service-install redis.windows.conf ...