分布式爬虫
- 概念:我们需要搭建一个分布式的机群,让其对一组资源进行分布联合爬取。
- 作用:提升爬取数据的效率

- 如何实现分布式?
  - 安装一个scrapy-redis的组件
爬取到的数据自动存放在redis中
  - 原生的scarapy是不可以实现分布式爬虫,必须要让scrapy结合着scrapy-redis组件一起实现分布式爬虫。
  - 为什么原生的scrapy不可以实现分布式?
    - 调度器不可以被分布式机群共享
    - 管道不可以被分布式机群共享
- scrapy-redis组件作用:
  - 可以给原生的scrapy框架提供可以被共享的管道和调度器
- 实现流程
  - 创建一个工程
  - 创建一个基于CrawlSpider的爬虫文件
  - 修改当前的爬虫文件:
    - 导包:from scrapy_redis.spiders import RedisCrawlSpider
    - 将start_urls和allowed_domains进行注释
    - 添加一个新属性:redis_key = 'sun' 可以被共享的调度器队列的名称
    - 编写数据解析相关的操作
    - 将当前爬虫类的父类修改成RedisCrawlSpider
  - 修改配置文件settings
    - 指定使用可以被共享的管道:
      ITEM_PIPELINES = {
      'scrapy_redis.pipelines.RedisPipeline': 400
      }
  - 指定调度器:
    # 增加了一个去重容器类的配置, 作用使用Redis的set集合来存储请求的指纹数据, 从而实现请求去重的持久化
    DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
    # 使用scrapy-redis组件自己的调度器
    SCHEDULER = "scrapy_redis.scheduler.Scheduler"
    # 配置调度器是否要持久化, 也就是当爬虫结束了, 要不要清空Redis中请求队列和去重指纹的set。如果是True, 就表示要持久化存储, 就不清空数据, 否则清空数据
    SCHEDULER_PERSIST = True
  - 指定redis服务器:
    REDIS_HOST = 'ip'
    REDIS_PORT = 'port'

- redis相关操作配置:
  - 配置redis的配置文件:
    - linux或者mac:redis.conf
    - windows:redis.windows.conf
    - 代开配置文件修改:
      - 将bind 127.0.0.1进行删除
      - 关闭保护模式:protected-mode yes改为no
  - 结合着配置文件开启redis服务
    - redis-server 配置文件
  - 启动客户端:
    - redis-cli
- 执行工程:
  - scrapy runspider xxx.py
- 向调度器的队列中放入一个起始的url:
  - 调度器的队列在redis的客户端中
    - lpush xxx(redis_key即共享的调度器) www.xxx.com
- 爬取到的数据存储在了redis的proName:items这个数据结构中

将同一份代码多台电脑同时执行,任意一个客户端将人物放入调度器的队列后,机群共同爬取。

Scrapy框架(九)--分布式爬虫的更多相关文章

  1. 基于scrapy框架的分布式爬虫

    分布式 概念:可以使用多台电脑组件一个分布式机群,让其执行同一组程序,对同一组网络资源进行联合爬取. 原生的scrapy是无法实现分布式 调度器无法被共享 管道无法被共享 基于 scrapy+redi ...

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

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

  3. 爬虫开发14.scrapy框架之分布式操作

    分布式爬虫 一.redis简单回顾 1.启动redis: mac/linux:   redis-server redis.conf windows: redis-server.exe redis-wi ...

  4. scrapy框架之分布式操作

    分布式概念 分布式爬虫: 1.概念:多台机器上可以执行同一个爬虫程序,实现网站数据的分布爬取. 2.原生的scrapy是不可以实现分布式爬虫? a)调度器无法共享 b)管道无法共享 3.scrapy- ...

  5. 6 scrapy框架之分布式操作

    分布式爬虫 一.redis简单回顾 1.启动redis: mac/linux:   redis-server redis.conf windows: redis-server.exe redis-wi ...

  6. scrapy如何实现分布式爬虫

    使用scrapy爬虫的时候,记录一下如何分布式爬虫问题: 关键在于多台主机协作的关键:共享爬虫队列 主机:维护爬取队列从机:负责数据抓取,数据处理,数据存储 队列如何维护:Redis队列Redis 非 ...

  7. scrapy——7 scrapy-redis分布式爬虫,用药助手实战,Boss直聘实战,阿布云代理设置

    scrapy——7 什么是scrapy-redis 怎么安装scrapy-redis scrapy-redis常用配置文件 scrapy-redis键名介绍 实战-利用scrapy-redis分布式爬 ...

  8. 基于Python使用scrapy-redis框架实现分布式爬虫

    1.首先介绍一下:scrapy-redis框架 scrapy-redis:一个三方的基于redis的分布式爬虫框架,配合scrapy使用,让爬虫具有了分布式爬取的功能.github地址: https: ...

  9. python学习之-用scrapy框架来创建爬虫(spider)

    scrapy简单说明 scrapy 为一个框架 框架和第三方库的区别: 库可以直接拿来就用, 框架是用来运行,自动帮助开发人员做很多的事,我们只需要填写逻辑就好 命令: 创建一个 项目 : cd 到需 ...

  10. Scrapy框架——CrawlSpider类爬虫案例

    Scrapy--CrawlSpider Scrapy框架中分两类爬虫,Spider类和CrawlSpider类. 此案例采用的是CrawlSpider类实现爬虫. 它是Spider的派生类,Spide ...

随机推荐

  1. 飞桨PaddlePaddle的安装

    飞桨PaddlePaddle的安装 MacOS 下的 PIP 安装 一.环境准备 1.1 如何查看您的环境 可以使用以下命令查看本机的操作系统和位数信息: uname -m && ca ...

  2. PolarDB-X拆分键推荐

    简介: PolarDB-X 2.0提供了透明分布式的能力,默认进行主键的哈希拆分,让用户无感知的从单机数据库迁移到分布式数据库.拆分键的选择是学术界和工业界研究已久的问题,一个重要选型是tp优先还是a ...

  3. 龙蜥正式开源 SysOM:百万级实战经验打造!一站式运维管理平台 | 龙蜥技术

    ​简介:SysOM集监控.告警.诊断.修复.安全能力于一体的操作系统运维平台. ​ 文/系统运维 SIG 如果你被突如其来的 OOPS 和满屏奇怪的函数弄得满头问号?机器内存明明很大,却申请不出来内存 ...

  4. 使用 Arthas 排查 SpringBoot 诡异耗时的 Bug

    简介: 公司有个渠道系统,专门对接三方渠道使用,没有什么业务逻辑,主要是转换报文和参数校验之类的工作,起着一个承上启下的作用.最近,在优化接口的响应时间,优化了代码之后,但是时间还是达不到要求:有一个 ...

  5. DevOps 能力提升模型

    简介: DevOps 能力反映的是技术研发响应业务变化的能力.随着组织规模的增加和业务复杂性增长,DevOps 能力会变得越来越重要.持续提升 DevOps 的能力成为技术研发的共同挑战. 编者按:本 ...

  6. 如何开发 Node.js Native Add-on?

    简介: 来一起为 Node.js 的 add-on 生态做贡献吧~ 作者 | 吴成忠(昭朗) 这篇文章是由 Chengzhong Wu (@legendecas),Gabriel Schulhof ( ...

  7. DataWorks 功能实践速览03期 — 生产开发环境隔离

    ​简介: DataWorks功能实践系列,帮助您解析业务实现过程中的痛点,提高业务功能使用效率! 往期回顾: DataWorks 功能实践速览01期--数据同步解决方案:为您介绍不同场景下可选的数据同 ...

  8. [ML] 详解 ChatGLM-webui 的启动使用与 ChatGLM-6B 常见问题

      1. ChatGLM-webui 总共支持以下几个命令选项: 2. 以 windows 为例,在 PowerShell 里运行命令: # 安装依赖 pip install torch==1.13. ...

  9. [FAQ] Error: com.mysql.jdbc.Driver not loaded. :jdbc_driver_library

    以上问题出现在 logstash.conf 未配置好 MySQL 的 JDBC 驱动时导致的错误提示. 首先,下载好 MySQL JDBC 驱动库,可以放到 logstash.conf 所在当前目录或 ...

  10. 2018-8-10-win10-uwp-App-to-app-communication-应用通信

    title author date CreateTime categories win10 uwp App-to-app communication 应用通信 lindexi 2018-08-10 1 ...