zoukankan      html  css  js  c++  java
  • scrapy中间件

    一、概述
      1、中间件的作用
        在scrapy运行的整个过程中,对scrapy框架运行的某些步骤做一些适配自己项目的动作:
        例如:scrapy内置的httpErrorMiddleware,可以在http请求出错时做一些处理。
      2.中间件的使用方法
        配置settings.py
    
    二、中间件的分类
    
        scrapy的中间件理论上又三种(Scduler 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 下载过程中出现异常时被调用
        编写中间件时,需要思考要实现的功能最适合在那个过程处理,就编写哪个方法.
        中间件可以用来处理请求,处理结果或者结合信号协调一些方法的使用等.也可以在原有的爬虫上添加适应项目的其他功能,这一点在扩展中编写也可以达到目的,实际上扩展更加去耦合化,推荐使用扩展.


    以上内容作为课堂笔记,如有雷同,请联系于我
  • 相关阅读:
    <Graph> Topological + Undirected Graph 310 Union Find 261 + 323 + (hard)305
    <Topological Sort> ( 高频, hard) 269
    <Stack> (高频)394 ( 高频)224
    <DFS & BFS> 286 339 (BFS)364
    <Matrix> 311 378
    <Binary Search> 81 (高频)34 (很难hard, 高频)315 (hard)354
    <LinkedList> 369 (高)143 (第二遍)142 148
    <DP> (高频)139 375 374 (DP hard)312
    <BackTracking> permutation 254 47 60
    <Tree> 298 250 366 199(高频) 98(高频)
  • 原文地址:https://www.cnblogs.com/ArtisticMonk/p/9707057.html
Copyright © 2011-2022 走看看