• 134 scrapy框架详解, 配置文件的设置, 请求传参, 代理池, 中间件的设置


    主要内容:

    1 scrapy框架的详解:https://blog.csdn.net/qq_37143745/article/details/80996707

      a : 各部分的功能:

        Spiders(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)
        Engine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
        Scheduler(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
        Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理
        ItemPipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
        Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。
        Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间
      b : 代码执行流程:

        SPIDERS的yeild将request发送给ENGIN
        ENGINE对request不做任何处理发送给SCHEDULER
        SCHEDULER( url调度器),生成request交给ENGIN
        ENGINE拿到request,通过MIDDLEWARE进行层层过滤发送给DOWNLOADER
        DOWNLOADER在网上获取到response数据之后,又经过MIDDLEWARE进行层层过滤发送给ENGIN
        ENGINE获取到response数据之后,返回给SPIDERS,SPIDERS的parse()方法对获取到的response数据进行处理,解析出items或者requests
        将解析出来的items或者requests发送给ENGIN
        ENGIN获取到items或者requests,将items发送给ITEMPIPELINES,将requests发送给SCHEDULER
    2 请求传参(meta):  yield scapy.Request(url=url, callback=self.parse, meta={"item",item})

      需求: 将不再同一个页面的数据写在一起, 需要用到请求传参

      代码: 见第六天

    3  配置文件的设置:

    # 增加并发:
    #     默认scrapy开启的并发线程为32个,可以适当进行增加。在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100。
    #
    # 降低日志级别:
    #     在运行scrapy时,会有大量日志信息的输出,为了减少CPU的使用率。可以设置log输出信息为INFO或者ERROR即可。在配置文件中编写:LOG_LEVEL = ‘INFO’
    #
    # 禁止cookie:
    #     如果不是真的需要cookie,则在scrapy爬取数据时可以禁止cookie从而减少CPU的使用率,提升爬取效率。在配置文件中编写:COOKIES_ENABLED = False
    #
    # 禁止重试:
    #     对失败的HTTP进行重新请求(重试)会减慢爬取速度,因此可以禁止重试。在配置文件中编写:RETRY_ENABLED = False
    #
    # 减少下载超时:
    #     如果对一个非常慢的链接进行爬取,减少下载超时可以能让卡住的链接快速被放弃,从而提升效率。在配置文件中进行编写:DOWNLOAD_TIMEOUT = 10 超时时间为10s
    
    CONCURRENT_REQUESTS = 10
    # LOG_LEVEL = 'ERROR'
    COOKIES_ENABLED = False
    RETRY_ENABLED = False
    # DOWNLOAD_TIMEOUT = 5
    

    4 代理池:在中间件中设置

      用处: 当请求次数过多, ip被禁掉, 或者不想被别人看到自己真实的ip, 

      代码: 见第六天爬虫

      

  • 相关阅读:
    [Perl]Windows 系统 Unicode 文件名操作(新建、重命名、枚举、复制)全攻略
    [Perl]Can't link/include C library 'ft2build.h', 'freetype', aborting.
    ompparticles.cpp:(.text+0x322): undefined reference to `omp_set_num_threads'
    undefined reference to `omp_get_max_threads'
    使用MinGW 编译 iconv 库
    phpBB论坛 代码 语法高亮 模块 Codebox Plus
    最新版Mac系统(10.14.4) && Xcode(10.2.1) 无法使用dwarfdump 解析闪退的问题
    Xcode 8 打包教程
    Xcode 8.0无法注释的问题
    我的github地址,里边有一些拍照功能,选择照片功能的实现,还有一些其它的开源项目
  • 原文地址:https://www.cnblogs.com/gyh412724/p/10269130.html
Copyright © 2020-2023  润新知