爬虫篇 --- 分布式爬虫

What is 分布式,爬虫?

  使用多台机器组成一个分布式的机群,在机群中运行同一组程序。进行联合数据的爬取 ! 

Scrapy怎么实现分布式?

  原生Scrapy是无法实现分布式的 !

       Reason:

            -  原生scrapy中的调度器无法共享,

            -  原生scrapy中的管道不可以被共享

  Solution:

            -  必须使用scrapy-redis(模块)

    -  该模块可以 给原生的scrapy提供共享的管道和调度器

            -  pip install scrapy-redis

  搭建流程:

1. 创建工程
2. 爬虫文件
3. 将当前爬虫文件的父类修改为 RedisCrawlSpider
4. # allowed_domain 和起始url不再需要,删除 ,然后创建调度器队列名称 redis_key`
5. 数据解析,将解析的数据封装到Item中然后向管道提交。
6. settings.py中重新配置
    - 指定管道 : 
    """
    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 : 
    """
    REDIS_HOST = 'redis服务的ip地址'
    REDIS_PORT = 6379
    REDIS_ENCODING = ‘utf-8’
    REDIS_PARAMS = {‘password’:’123456’}
    """
7. 开启redis服务:
    - redis.windows.conf   取消默认绑定 "127.0.0.1" ;关闭保护模式
    - redis-server
    - redis-cli
8.运行爬虫文件: scrapy runspider SpiderFile.py
9. 向调度器队列中扔入一个起始url(在redis客户端中操作):lpush  redis_key属性值   起始url

 

    

 

转载于:https://www.cnblogs.com/CrazySheldon1/p/10838543.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值