爬虫中间件的用法与下载器中间件很是类似,只是它们的做用对象不一样。下载器中间件的做用对象是请求request和返回response;爬虫中间件的做用对象是爬虫,更具体地来讲,就是写在spiders文件夹下面的各个文件。它们的关系,在Scrapy的数据流图上能够很好地区分开来,以下图所示。scrapy
其中,四、5表示下载器中间件,六、7表示爬虫中间件。爬虫中间件会在如下几种状况被调用。ide
yield scrapy.Request()
或者yield item
的时候,爬虫中间件的process_spider_output()
方法被调用。Exception
的时候,爬虫中间件的process_spider_exception()
方法被调用。parse_xxx()
被调用以前,爬虫中间件的process_spider_input()
方法被调用。start_requests()
的时候,爬虫中间件的process_start_requests()
方法被调用。