2013-07-26 29 views
8

這兩個中間件都可以處理請求和響應。但有什麼區別?Scrapy的蜘蛛中間件和下載中間件有什麼區別?

+4

@MitchWheat:它可能看起來微不足道,但這是一個很好的問題。 – Blender

+0

似乎沒有任何編程內容:看起來像一個搜索引擎的問題。 –

+1

@MitchWheat:兩者之間的區別並不明顯,在文檔中沒有解釋。如果你不理解所涉及的框架,投下贊成票和密切投票並不是真的有用。 – Blender

回答

10

雖然它們具有幾乎相同的接口,它們用於不同的目的:

  • 下載中間件修改請求和響應或響應於響應請求。他們不直接與蜘蛛互動。一些示例是實現cookie,緩存,代理,重定向,設置用戶代理標題等的中間件。它們只是向下載器系統添加功能。

  • 蜘蛛中間件修改傳入和傳出蜘蛛的東西,如請求,項目,異常和start_requests。他們確實與下載中間件共享一些基本功能,但他們無法響應迴應而生成請求。它們站在蜘蛛和下載者之間。一個例子是用錯誤的HTTP狀態代碼過濾掉響應。

一些中間件可以作爲一個下載的中間件或蜘蛛中間件的功能,但他們往往微不足道,將被強制爲一類或其它一旦你添加更復雜的功能。

+0

感謝您的幫助我很多的解決方案。您可以在這裏詳細說明DOWNLOADER_MIDDLEWARES的作用。@ Blender –