1. 程式人生 > >scrapy的自動限速(AutoThrottle)擴展

scrapy的自動限速(AutoThrottle)擴展

rap literal 根據 -s ID 之前 實現 自動調整 十分

該擴展能根據Scrapy服務器及您爬取的網站的負載自動限制爬取速度。

設計目標

  1. 更友好的對待網站,而不使用默認的下載延遲0。
  2. 自動調整scrapy來優化下載速度,使得用戶不用調節下載延遲及並發請求數來找到優化的值。 用戶只需指定允許的最大並發請求數,剩下的都交給擴展來完成。

擴展是如何實現的

在Scrapy中,下載延遲是通過計算建立TCP連接到接收到HTTP包頭(header)之間的時間來測量的。

註意,由於Scrapy可能在忙著處理spider的回調函數或者無法下載,因此在合作的多任務環境下準確測量這些延遲是十分苦難的。 不過,這些延遲仍然是對Scrapy(甚至是服務器)繁忙程度的合理測量,而這擴展就是以此為前提進行編寫的。

限速算法

算法根據以下規則調整下載延遲及並發數:

  1. spider永遠以1並發請求數及 AUTOTHROTTLE_START_DELAY 中指定的下載延遲啟動。
  2. 當接收到回復時,下載延遲會調整到該回復的延遲與之前下載延遲之間的平均值。

來源:http://scrapy-chs.readthedocs.io/zh_CN/latest/topics/autothrottle.html

scrapy的自動限速(AutoThrottle)擴展