scrapy ---分布式爬虫

这篇具有很好参考价值的文章主要介绍了scrapy ---分布式爬虫。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 导模块

pip install scrapy-redis

 原来scrapy的Scheduler维护的是本机的任务队列(待爬取的地址)+本机的去重队列(放在集合中)---》在本机内存中
如果把scrapy项目,部署到多台机器上,多台机器爬取的内容是重复的 

 流程图

scrapy ---分布式爬虫,爬虫,scrapy,分布式,爬虫


所以实现分布式爬取的关键就是,找一台专门的主机上运行一个共享的队列比如Redis,
然后重写Scrapy的Scheduler,让新的Scheduler到共享队列存取Request,并且去除重复的Request请求,所以总结下来,实现分布式的关键就是三点:
    #1、多台机器共享队列
    #2、重写Scheduler,让其无论是去重还是任务都去访问共享队列
    #3、为Scheduler定制去重规则(利用redis的集合类型)
    
    
# scrapy-redis实现分布式爬虫
    -公共的去重
    -公共的待爬取地址队列

  使用步骤

               from scrapy_redis.spiders import RedisSpider
    1 把之前爬虫类,继承class CnblogsSpider(RedisSpider):


     2 去掉起始爬取的地址,加入一个类属性

        去掉它:start_urls = ["https://www.cnblogs.com"] #爬取的初始地址    
        redis_key = 'myspider:start_urls'  # redis列表的key,后期我们需要手动插入起始地址  


     3 配置文件中配置

          scrapy redis去重类,使用redis的集合去重        
        DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"


        不使用原生的调度器了,使用scrapy_redis提供的调度器,它就是使用了redis的列表
                SCHEDULER = "scrapy_redis.scheduler.Scheduler"
                REDIS_HOST = 'localhost'                            # 主机名
                REDIS_PORT = 6379                                   # 端口
                ITEM_PIPELINES = {
       # 'mysfirstscrapy.pipelines.MyCnblogsPipeline': 300,
       'mysfirstscrapy.pipelines.MyCnblogsMySqlPipeline': 301,
        'scrapy_redis.pipelines.RedisPipeline': 400,
    }
        
    # 再不同多台机器上运行scrapy的爬虫,就实现了分布式爬虫

      4.将初始爬取的地址传到redis队列中---cmd启动redis

lpush key value [value ...]

key------就是第二步  redis_key对应的值

value--------就是爬取的地址初始地址

        分布式爬虫 - 刘清政 - 博客园 (cnblogs.com)文章来源地址https://www.toymoban.com/news/detail-562062.html

到了这里,关于scrapy ---分布式爬虫的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式爬虫架构-对等分布式(2)

    前言 本文是该专栏的第45篇,后面会持续分享python爬虫干货知识,记得关注。 在面对海量数据的采集需求时,使用分布式爬虫是非常有必要的。继上一篇,详细介绍主从分布式爬虫架构,对主从分布式相关知识感兴趣的同学,可往前翻阅。而本文,笔者再单独来详细介绍分布

    2023年04月25日
    浏览(40)
  • 网络爬虫:如何有效的检测分布式爬虫

    分布式爬虫是一种高效的爬虫方式,它可以将爬虫任务分配给多个节点同时执行,从而加快爬虫的速度。然而,分布式爬虫也容易被目标网站识别为恶意行为,从而导致IP被封禁。那么,如何有效地检测分布式爬虫呢?本文将为您一一讲解。 检查请求头 我们可以检查分布式爬

    2024年02月09日
    浏览(28)
  • [爬虫]3.2.2 分布式爬虫的架构

    在分布式爬虫系统中,通常包括以下几个主要的组成部分:调度器、爬取节点、存储节点。我们接下来将详细介绍每一个部分的功能和设计方法。 调度器是分布式爬虫系统中的核心,它负责管理和分发爬取任务。调度器通常需要处理以下功能: URL管理 :调度器需要管理一个

    2024年02月16日
    浏览(25)
  • Go分布式爬虫笔记(二十)

    创建调度程序,接收任务并将任务存储起来 执行调度任务,通过一定的调度算法将任务调度到合适的 worker 中执行 创建指定数量的 worker,完成实际任务的处理 创建数据处理协程,对爬取到的数据进行进一步处理 scheduler/scheduler.go main.go 特性 我们往 nil 通道中写入数据会陷入

    2023年04月13日
    浏览(37)
  • Go分布式爬虫(二十四)

    爬虫项目的一个重要的环节就是把最终的数据持久化存储起来,数据可能会被存储到 MySQL、MongoDB、Kafka、Excel 等多种数据库、中间件或者是文件中。 之前我们爬取的案例比较简单,像是租房网站的信息等。但是实际情况下,我们的爬虫任务通常需要获取结构化的数据。例如一

    2023年04月20日
    浏览(33)
  • 爬虫的分布式思维与实现思路

    scrapy-redis实现分布式,其实从原理上来说很简单,这里为描述方便,我们把自己的 核心服务器 称为 master ,而把用于 跑爬虫程序 的机器称为 slave 我们知道,采用scrapy框架抓取网页,我们需要首先给定它一些start_urls,爬虫首先访问start_urls里面的url,再根据我们的具体逻辑,

    2024年02月12日
    浏览(24)
  • 从0到1构建智能分布式大数据爬虫系统

    【作者主页】: 吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建

    2024年02月05日
    浏览(29)
  • 大规模数据爬取 - 增量和分布式爬虫架构实战

    嗨,亲爱的爬虫开发者们!在当今的数据驱动时代,大规模数据的爬取对于许多领域的研究和应用至关重要在本文中,我将与你分享大规模数据爬取的实战经验,重点介绍增量和分布式爬虫架构的应用,帮助你高效地处理海量数据。 1.增量爬虫 增量爬虫是指只爬取新增或更新

    2024年02月10日
    浏览(39)
  • Python爬虫分布式架构 - Redis/RabbitMQ工作流程介绍

    在大规模数据采集和处理任务中,使用分布式架构可以提高效率和可扩展性。本文将介绍Python爬虫分布式架构中常用的消息队列工具Redis和RabbitMQ的工作流程,帮助你理解分布式爬虫的原理和应用。 为什么需要分布式架构? 在数据采集任务中,单机爬虫可能面临性能瓶颈和资

    2024年02月11日
    浏览(34)
  • 分布式爬虫与SOCKS5代理池的组合优势

    在数据驱动的时代,网络爬虫成为了获取大量信息的重要工具。然而,随着网站反爬策略的升级,传统的单机爬虫面临着速度慢、易被封禁等问题。为了应对这些挑战,我们可以尝试将分布式爬虫与SOCKS5代理池相结合,提高爬虫的性能和稳定性。 分布式爬虫简介 a.什么是分布

    2024年02月10日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包