• 爬虫---scrapy分布式和增量式


    分布式

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

    • 原生的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实现去重
  • 相关阅读:
    06.数组模拟栈-简易计算器
    05.单向环形链表应用 -- 约瑟夫环
    02.数组模拟环形队列
    01.稀疏矩阵与二维数组相互转化
    大数字相乘
    13.打包发布
    悦苗园公益活动
    程序猿打招自己的电子图书馆
    【技能】提高网站可用性
    【微信技能】如何通过微信号知道对方微信的二维码
  • 原文地址:https://www.cnblogs.com/KX-Lau/p/13728986.html
Copyright © 2020-2023  润新知