• Python爬虫_分布式爬虫


    分布式爬虫

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

    原生的scrapy是不可以实现分布式:

    原生的scrapy中的调度器不可以被共享
    原生的scrapy的管道不可以被共享

    实现分布式就必须使用scrapy-redis(模块)

    可以给原生的scrapy提供可以被共享的管道和调度器

    pip install scrapy_redis

    搭建流程:

    创建工程

    - 爬虫文件

    - 修改爬虫文件:

    导包:from scrapy_redis.spiders import RedisCrawlSpider
    

    将当前爬虫类的父类进行修改RedisCrawlSpider

    allowed_domains,start_url删除,添加一个新属性redis_key(调度器队列的名称)

    数据解析,将解析的数据封装到item中然后向管道提交

    - 配置文件的编写:

    指定管道: 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 = 'redis服务的ip地址'
    

    REDIS_PORT = 6379

    REDIS_ENCODING = ‘utf-8

    REDIS_PARAMS = {‘password’:’123456’}

    开启redis服务(携带redis的配置文件:redis-server ./redis.windows.conf),和客户端:

    对redis的配置文件进行适当的配置:

    #bind 127.0.0.1
    
    protected-mode no

    开启

    启动程序:scrapy runspider xxx.py

    向调度器队列中扔入一个起始的url(redis的客户端):lpush xxx www.xxx.com

    xxx表示的就是redis_key的属性值

  • 相关阅读:
    欢迎访问我的快站clone-5483e9466f404.kuaizhan.com
    SWFUpload 2.5.0版 官方说明文档 中文翻译版
    http://demo.jb51.net/js/2011/artDialog/_doc/iframeTop.html
    使用jquery-qrcode生成二维码
    主流浏览器CSS3和HTML5兼容性详细清单
    js获取浏览器基本信息:document.body.clientWidth/clientHeight/scrollWidth/scrollTop。
    document.documentElement和document.body的区别
    CSS 的优先级机制
    css三列布局之双飞翼pk圣杯
    响应式web设计(一)
  • 原文地址:https://www.cnblogs.com/z1115230598/p/11148273.html
Copyright © 2020-2023  润新知