分布式

  • 概念: 需要搭建一个分布式的机群, 然后在每一台电脑中执行同一组程序, 让其对某一网站的数据进行联合分布爬取.

  • 原生的scrapy框架不能实现分布式的原因

    • 调度器不能被共享,
    • 管道也不能被共享.
  • scrapy + scrapy-redis 可以实现分布式

  • scrapy-redis组件的作用:

    • 可以提供可被共享的调度器和管道
    • 特性: 数据只可以存储到redis数据库中
  • 分布式的实现流程:

    1. 安装组件pip install scrapy-redis

    2. 创建scrapy工程

    3. cd 工程目录中

    4. 创建爬虫文件: 基于Spider的爬虫或者基于CrawlSpider的爬虫

    5. 修改爬虫类:

      1. 导包 from scrapy_redis.spiders import RedisCrawlSpider
      2. 修改当前爬虫类的父类为 RedisCrawlSpider
      3. allowed_domains和start_urls删除
      4. 添加一个新属性: redis_key = 'fbsQueue', 表示的是可以被共享的调度器队列名称
      5. 编写爬虫类的常规操作
    6. settings配置文件的配置

      1. UA伪装
      2. Robots协议
      3. 指定管道:
      ITEM_PIPELINES = {
      'scrapy_redis.pipelines.RedisPipeline': 400
      }
      1. 指定调度器
      # 增加一个去重容器类的配置, 作用是使用redis的set集合来存储请求的指纹数据, 实现请求去重的持久化
      DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 使用scrapy-redis组件自己的调度器
      SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 配置调度器是否要持久化, 即当爬虫结束时, 要不要清空redis中请求队列和去重指纹的set.
      # 如果是True, 表示要持久化存储, 就不会清空数据, 否则清空数据
      SCHEDULER_PERSIST = True
      1. 指定数据库
      REDIS_HOST = 'redis服务器的ip地址'
      REDIS_PORT = 6379
    7. redis的配置文件进行配置 redis.windows.conf

      1. 关闭默认绑定: 56行注释: bind 127.0.0.1
      2. 关闭保护模式: 75行: protected=mode no
      3. 启动redis的服务端和客户端
      redis-server.exe redis.windows.conf
      redis-cli
    8. 启动程度 scrapy runspider xxx.py

    9. 向调度器的队列中仍入一个起始的url:

      1. 队列是存在于redis中
      2. 开启redis的客户端: lpush fbsQueue https://movie.douban.com/top250?start=0&filter=

增量式

  • 概念: 用于监测网站数据更新的情况
  • 核心机制: 去重, 可以使用redis的set实现去重

爬虫---scrapy分布式和增量式的更多相关文章

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

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

  2. 基于Scrapy框架的增量式爬虫

    概述 概念:监测 核心技术:去重 基于 redis 的一个去重 适合使用增量式的网站: 基于深度爬取的 对爬取过的页面url进行一个记录(记录表) 基于非深度爬取的 记录表:爬取过的数据对应的数据指纹 ...

  3. 爬虫Ⅱ:scrapy框架

    爬虫Ⅱ:scrapy框架 step5: Scrapy框架初识 Scrapy框架的使用 pySpider 什么是框架: 就是一个具有很强通用性且集成了很多功能的项目模板(可以被应用在各种需求中) scr ...

  4. 爬虫 crawlSpider 分布式 增量式 提高效率

    crawlSpider 作用:为了方便提取页面整个链接url,不必使用创参寻找url,通过拉链提取器,将start_urls的全部符合规则的URL地址全部取出 使用:创建文件scrapy startp ...

  5. python爬虫---CrawlSpider实现的全站数据的爬取,分布式,增量式,所有的反爬机制

    CrawlSpider实现的全站数据的爬取 新建一个工程 cd 工程 创建爬虫文件:scrapy genspider -t crawl spiderName www.xxx.com 连接提取器Link ...

  6. Scrapy 增量式爬虫

    Scrapy 增量式爬虫 https://blog.csdn.net/mygodit/article/details/83931009 https://blog.csdn.net/mygodit/ar ...

  7. Scrapy分布式爬虫,分布式队列和布隆过滤器,一分钟搞定?

    使用Scrapy开发一个分布式爬虫?你知道最快的方法是什么吗?一分钟真的能 开发好或者修改出 一个分布式爬虫吗? 话不多说,先让我们看看怎么实践,再详细聊聊细节~ 快速上手 Step 0: 首先安装 ...

  8. Python爬虫从入门到放弃(二十)之 Scrapy分布式原理

    关于Scrapy工作流程回顾 Scrapy单机架构 上图的架构其实就是一种单机架构,只在本机维护一个爬取队列,Scheduler进行调度,而要实现多态服务器共同爬取数据关键就是共享爬取队列. 分布式架 ...

  9. scrapy分布式爬虫scrapy_redis二篇

    =============================================================== Scrapy-Redis分布式爬虫框架 ================ ...

随机推荐

  1. LGP5992题解

    贪心和DP一样,上来先找规律 考虑一种特殊情况:菊花图. 很容易发现这是小学数学题,排序后取中点. 来考虑另一种情况:深度为 3 的完全二叉树. 假设这颗完全二叉树的节点编号是按照线段树编号的,给定权 ...

  2. Mybaties——动态sql

    动态 SQL 是 MyBatis 的强大特性之一.如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表 ...

  3. 配置jenkins+git+python实现接口自动化持续集成

    1.安装jenkins服务(傻瓜式安装,这里不做描述) 2.windows上访问jenkins地址(http://ip:端口号/),用户名密码登录 3.进入后新建一个job 4.Source Code ...

  4. MySQL SQL Injection Cheat Sheet

    MySQL SQL Injection Cheat Sheet Some useful syntax reminders for SQL Injection into MySQL databases- ...

  5. Docker容器入门介绍

    1.前言 Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机.不过,Docker 跟传统的虚拟化方式相比具有众多的优势.Docker: 本意是码头工人,言外之意是集装箱: Java号称 ...

  6. WebGPU 工具分享 - WGSL 代码高亮插件(VSCode)与预处理工具

    WGSL 还在积极讨论中,虽然各位大佬不是很满意这个新生儿. 不过,社区已经有了基础的实验性工具(VSCode 插件),并支持了较新的语法. ① WGSL 插件 这个插件支持对文件扩展名为 .wgsl ...

  7. CF487E Tourists(圆方树+树链剖分+multiset/可删堆)

    CF487E Tourists(圆方树+树链剖分+multiset/可删堆) Luogu 给出一个带点权的无向图,两种操作: 1.修改某点点权. 2.询问x到y之间简单路径能走过的点的最小点权. 题解 ...

  8. web端,app端,小程序端测试差异详解

    前置解释:1.单纯从功能测试的层面上来讲的话,APP 测试.web 测试和H5测试在流程和功能测试上是没有区别的2.Web项目或pc项目都是在电脑上进行测试的.常见的PC项目架构有BS架构和CS架构的 ...

  9. 什么是 AQS ?

    AQS 是 AbustactQueuedSynchronizer 的简称,它是一个 Java 提高的底层同步工具类,用一个 int 类型的变量表示同步状态,并提供了一系列的 CAS 操作来管理这个同步 ...

  10. 在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?

    在测试目标只关注 Spring MVC 组件的情况下,WebMvcTest 注释用于单元测试 Spring MVC 应用程序.在上面显示的快照中,我们只想启动 ToTestController. 执行 ...