下載中間件 簡介 下載器,無法執行js代碼,本身不支持代理 下載中間件用來hooks進Scrapy的request/response處理過程的框架,一個輕量級的底層系統,用來全局修改scrapy的request和response scrapy框架中的下載中間件,是實現了特殊方法的類,scrapy系統 ...
下載中間件
簡介
下載器,無法執行js代碼,本身不支持代理
下載中間件用來hooks進Scrapy的request/response處理過程的框架,一個輕量級的底層系統,用來全局修改scrapy的request和response
scrapy框架中的下載中間件,是實現了特殊方法的類,scrapy系統自帶的中間件被放在DOWNLOADER_MIDDLEWARES_BASE設置中
用戶自定義的中間件需要在DOWNLOADER_MIDDLEWARES中進行設置,該設置是一個dict,鍵是中間件類路徑,值是中間件的順序,是一個正整數0-1000.越小越靠近引擎
API
每個中間件都是Python的一個類,它定義了以下一個或多個方法
process_request(request,spider) 處理請求,對於通過中間件的每個請求調用此方法
process_response(request, response, spider) 處理響應,對於通過中間件的每個響應,調用此方法
process_exception(request, exception, spider) 處理請求時發生了異常調用
from_crawler(cls,crawler )
常用內置中間件
CookieMiddleware 支持cookie,通過設置COOKIES_ENABLED 來開啟和關閉
HttpProxyMiddleware HTTP代理,通過設置request.meta['proxy']的值來設置
UserAgentMiddleware 與用戶代理中間件
其它中間件參見官方文檔:https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
常用設置
設置的優先順序
命令行選項(優先順序最高)
設置per-spider
項目設置模塊
各命令預設設置
預設全局設置(低優先順序)
常用項目設置
BOT_NAME 項目名稱
CONCURRENT_ITEMS item 處理最大併發數,預設100
CONCURRENT_REQUESTS 下載最大併發數
CONCURRENT_REQUESTS_PER_DOMAIN 單個功能變數名稱最大併發數
CONCURRENT_REQUESTS_PER_IP 單個ip最大併發數