• scrapy中间件的简介


    中间件的简介

      1.中间件的作用

              在scrapy运行的整个过程中,对scrapy框架运行的某些步骤做一些适配自己项目的动作.

         例如scrapy内置的HttpErrorMiddleware,可以在http请求出错时做一些处理.

           2.中间件的使用方法

              配置settings.py.详见scrapy文档 https://doc.scrapy.org

    中间件的分类

      scrapy的中间件理论上有三种(Schduler Middleware,Spider Middleware,Downloader Middleware),在应用上一般有以下两种

           1.爬虫中间件Spider Middleware

             主要功能是在爬虫运行过程中进行一些处理.

      2.下载器中间件Downloader Middleware

             主要功能在请求到网页后,页面被下载时进行一些处理.

     中间件的方法

          1.Spider Middleware有以下几个函数被管理:

           - process_spider_input 接收一个response对象并处理,

             位置是Downloader-->process_spider_input-->Spiders(Downloader和Spiders是scrapy官方结构图中的组件)

           - process_spider_exception spider出现的异常时被调用

           - process_spider_output 当Spider处理response返回result时,该方法被调用

           - process_start_requests 当spider发出请求时,被调用

        位置是Spiders-->process_start_requests-->Scrapy Engine(Scrapy Engine是scrapy官方结构图中的组件)         

       2.Downloader Middleware有以下几个函数被管理

       - process_request  request通过下载中间件时,该方法被调用

       - process_response 下载结果经过中间件时被此方法处理

       - process_exception 下载过程中出现异常时被调用

          编写中间件时,需要思考要实现的功能最适合在那个过程处理,就编写哪个方法.

          中间件可以用来处理请求,处理结果或者结合信号协调一些方法的使用等.也可以在原有的爬虫上添加适应项目的其他功能,这一点在扩展中编写也可以达到目的,实际上扩展更加去耦合化,推荐使用扩展.

    代码示例

    下载中间件代码示例

    配置

    1
    2
    3
    4
    5
    6
    DOWNLOADER_MIDDLEWARES = {
       #'xdb.middlewares.XdbDownloaderMiddleware': 543,
        # 'xdb.proxy.XdbProxyMiddleware':751,
        'xdb.md.Md1':666,
        'xdb.md.Md2':667,
    }

    爬虫中间件下载示例

    编写类

    配置

    1
    2
    3
    4
    5
    SPIDER_MIDDLEWARES = {
       # 'xdb.middlewares.XdbSpiderMiddleware': 543,
        'xdb.sd.Sd1'666,
        'xdb.sd.Sd2'667,
    }
  • 相关阅读:
    Android 最简单的基于FFmpeg的移动端例子:Android HelloWorld
    实现简易的android 直播技术
    Android Service和Thread的关系
    Android Fragment 你应该知道的一切
    SQLyog普通版与SQLyog企业版对比分析
    Sqoop异常解决ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter问题
    SQLyog软件里无法插入中文(即由默认的latin1改成UTF8编码格式)
    Sqoop-1.4.6工具import和export使用详解(官网)
    Sqoop Export原理和详细流程讲解
    Sqoop Import原理和详细流程讲解
  • 原文地址:https://www.cnblogs.com/xyhh/p/10860858.html
Copyright © 2020-2023  润新知