python爬蟲之scrapy中介軟體介紹
一、概述
1.中介軟體的作用
在scrapy執行的整個過程中,對scrapy框架執行的某些步驟做一些適配自己專案的動作.
例如scrapy內建的HttpErrorMiddleware,可以在http請求出錯時做一些處理.
2.中介軟體的使用方法
配置settings.py.詳見scrapy文件 https://doc.scrapy.org
二、中介軟體的分類
scrapy的中介軟體理論上有三種(Schduler Middleware,Spider Middleware,Downloader Middleware),在應用上一般有以下兩種
1.爬蟲中介軟體Spider Middleware
主要功能是在爬蟲執行過程中進行一些處理.
2.下載器中介軟體Downloader Middleware
主要功能在請求到網頁後,頁面被下載時進行一些處理.
三、使用
1.Spider Middleware有以下幾個函式被管理:
- process_spider_input 接收一個response物件並處理,
位置是Downloader-->process_spider_input-->Spiders(Downloader和Spiders是scrapy官方結構圖中的元件)
- process_spider_exception spider出現的異常時被呼叫
- process_spider_output 當Spider處理response返回result時,該方法被呼叫
- process_start_requests 當spider發出請求時,被呼叫
位置是Spiders-->process_start_requests-->Scrapy Engine(Scrapy Engine是scrapy官方結構圖中的元件)
2.Downloader Middleware有以下幾個函式被管理
- process_request request通過下載中介軟體時,該方法被呼叫
- process_response 下載結果經過中介軟體時被此方法處理
- process_exception 下載過程中出現異常時被呼叫
編寫中介軟體時,需要思考要實現的功能最適合在那個過程處理,就編寫哪個方法.
中介軟體可以用來處理請求,處理結果或者結合訊號協調一些方法的使用等.也可以在原有的爬蟲上新增適應專案的其他功能,這一點在擴充套件中編寫也可以達到目的,實際上擴充套件更加去耦合化,推薦使用擴充套件.