爬蟲中間件的用法與下載器中間件很是類似,只是它們的做用對象不一樣。下載器中間件的做用對象是請求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()
方法被調用。