沒有公共接口,它(所以我的回答可以成爲未來Scrapy版本無效),但你可以檢查執行情況的內置AutoThrottle擴展。
這是一個有點複雜,但Scrapy 1.0的想法是這樣的:有下載它處理所有的下載。決定並行發送多少個請求以及使用Downloader的延遲使用「插槽」。通過更改插槽屬性(delay
,concurrency
),您可以更改下載程序的行爲。默認情況下,每個域有一個插槽(或者如果設置了CONCURRENT_REQUESTS_PER_IP選項,則爲每個IP地址)。您還可以通過設置自定義request.meta['download_slot']
將請求路由到任何其他插槽。對延遲和併發用於所有時隙
缺省值是使用scrapy設置或蜘蛛屬性等download_delay
設置。但是您可以在運行時使用Scrapy擴展來調整它們 - 這就是AutoThrottle正在做的事情。要爲不同的請求使用不同的下載延遲,您需要在適當的插槽中更改delay
屬性。
當你的請求被髮送到任務簡化不同的領域 - 的插槽已經不同,你需要找到它們並改變delay
值。如果您想爲單個網站的不同部分使用不同的延遲時間,則必須使用request.meta['download_slot']
來設置自定義廣告位。
對不起,我不會提供一個現成的應用實例,但希望這有助於。如果不清楚該從哪裏走,可以隨時提出更多問題。
此外,它可能只是使油門延伸的情況是所有你需要的東西,而且也沒有必要寫一個自定義擴展 - 第一次嘗試。
另外,簡單的選擇是創建2個蜘蛛,爲他們設定不同的下載延遲:第一下載頁面,並提取/存儲的圖片鏈接,第二下載圖像。
據我所知,沒有開箱即用的功能;也許是一些自定義的中間件? – tegancp