初识scrapy框架(七)------ 下载中间件内容补充(内置的函数介绍)

下载中间件常用的函数:

  process_request(self, request, spider)

  参数:

    request:一个Request对象,需要处理的请求对象。

    spider:此Request 所对应的spider。

  1、当每个request请求通过下载中间件的时候,此方法被调用。

  2、process_request()必须返回一下其中之一:None,Response对象,一个Request对象或者raise IgnoreRequest 。

  3、如果返回的是None,则会调用其他的中间件方法去处理该request请求,知道合适的下载器处理函数被调用,该

     request被执行,获得response 。

  4、如果返回response对象,Scrapy不会调用其他的process_request()或process_exception()方法,或相应的下载函

       数;将response对象返回给process_response()方法处理。

  5、如果是Request对象,Scrapy 则停止调用process_request方法并重新调度返回的request。当新的request被执行

       后,相应的中间件会根据下载的response被调用。

  6、如果抛出一个异常IgnoreRequest,则会调用安装的process_exception()方法,如果没有任何一个方法处理

     该异常,则requestd errback(Request.errback)方法会被调用。如果代码没有处理抛出的异常,则该异常被忽略且

     不记录。

  process_response(self, request, response, spider)  

  参数:

    response:要处理的response对象。

    request:response对应的request请求对象。

    spider:response对应的spider。

  1、当下载器完成http请求,传递响应给引擎的时候调用。

  2、process_response()必须返回:Response对象,Request对象或者raise IgnoreRequest 。

  3、如果返回一个Response,该response会被中间件的其他process_response()调用处理。

  4、如果是一个Request对象,则中间件链停止,返回的request会被重新调度下载,处理类似于

        process_request那样。

  5、如果抛出IgnoreResquest异常,则调用request的errback(Request.errback)。如果没有代码处理抛出的

        异常,则该异常被忽略且不记录。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

posted @ 2018-05-18 11:00  巴蜀秀才  阅读(273)  评论(0编辑  收藏  举报