分布式

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

  • 原生的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. 全面解析UNIX缓冲区溢出 深度防御体系

    首先简要回顾一下缓冲区溢出的攻击大系: ◆栈溢出(stack smashing) 未检查输入缓冲区长度,导致数组越界,覆盖栈中局部变量空间之上的栈桢指针%ebp以及函数返回地址retaddr,当函数返 ...

  2. 74CMS 3.0 SQL注入漏洞前台

    一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 2.因为74CMS3.0源代码编辑使用GBK编 ...

  3. ubuntu忘记密码,用root修改Ubuntu密码

    今天突发奇想,想改一下ubuntu的用户名,仅仅修改了/etc/passwd中的用户名. 改完后没有用命令修改密码,直接reboot了. 结果悲剧了,登不进去了. 赶紧百度一下,结果发现,本宝宝看不懂 ...

  4. [XMAN筛选赛](web)ctf用户登录

    0x00 题目概述 就只写了几道web题,有些考察点比较明显,所以个人感觉来说web总体不难. 一航的writeup写得差不多,我这写个他没写的wirteup. 看题: 链接点进去是一个登录页面,习惯 ...

  5. STM32控制永磁同步电机 | FOC电机控制算法概述

    1. FOC基本概念 参考:https://www.sohu.com/a/432103720_120929980 FOC(field-oriented control)为磁场导向控制,又称为矢量控制( ...

  6. 在线Remix链接本地文件夹

    问题 1.本地Remix环境版本滞后于在线编译器,新版本的语法在旧版本编译器中出现错误. 2.没有配置Vscode编译器,不便导入项目. 解决方案 *本解决方案基于Mac系统 创建共享文件夹 在本地创 ...

  7. KestrelServer详解[1]:注册监听终结点(Endpoint)

    具有跨平台能力的KestrelServer是最重要的服务器类型.针对KestrelServer的设置均体现在KestrelServerOptions配置选项上,注册的终结点是它承载的最重要的配置选项. ...

  8. 基于JDK的动态代理原理分析

    基于JDK的动态代理原理分析 这篇文章解决三个问题: What 动态代理是什么 How 动态代理怎么用 Why 动态代理的原理 动态代理是什么? 动态代理是代理模式的一种具体实现,是指在程序运行期间, ...

  9. leedcode算法

    1.LeetCode - 合并两个链表 2. 3. 链表是否有环       https://jingyan.baidu.com/article/066074d69afb8d83c31cb068.ht ...

  10. Kafka 的设计架构你知道吗?

    Producer :消息生产者,就是向 kafka broker 发消息的客户端. Consumer :消息消费者,向 kafka broker 取消息的客户端. Topic :可以理解为一个队列,一 ...