看大图:
- 1、引擎发送response对象给爬虫中间件中的输入信息处理函数:process_spider_input,之后该函数会返回None或者引发异常。
- (1). 图中以1代表返回的是None,2代表引发的异常,
若返回None,则继续调用下一个爬虫中间件中的同类函数处理,直至传递给爬虫。
(2).若任一爬虫中间件中该类函数引发异常则调用request对象的errback方法(前提是定义了该方法,若未定义则会进入process_spider_exception处理链中)。
- (1). 图中以1代表返回的是None,2代表引发的异常,
- 2、爬虫得到response对象后返回可迭代的对象result或item,
然后进入输出信息处理链中 process_spider_output。- (1).由图可知必须返回可迭代对象或者引发异常,
若是可迭代对象则继续在处理链中传递,直至给引擎。
(2).引发异常则会从该中间件进入process_spider_exception的处理链中)
在异常处理链中处理相应的异常,若不能处理异常会直至传递到引擎被记录忽略掉
- (1).由图可知必须返回可迭代对象或者引发异常,