1、DOWNLOAD_DELAY
在settings中設置 DOWNLOAD_DELAY=2 #延時2秒,不能動態改變,導致訪問延時都差不多,也容易被發現
2、RANDOMIZE_DOWNLOAD_DELAY
在settings中設置 RANDOMIZE_DOWNLOAD_DELAY=True # 啟用后,當從相同的網站獲取數據時,Scrapy將會等待一個隨機的值,延遲時間為0.5到1.5之間的一個隨機值乘以DOWNLOAD_DELAY
3、通過自動限速擴展
`
from scrapy.contrib.throttle import AutoThrottle
`
自動限速擴展能夠根據Scrapy服務器及爬取的網站的負載自動限制爬取速度。
原理:在scrapy中,下載延遲是通過計算建立TCP連接到接收到HTTP包頭(header)之間的時間來測量的。
使用的限速算法根據規則調整下載延遲及並發數:
(1)spider永遠以1並發請求數及AUTOTHROTTLE_START_DELAY中指定的下載延遲啟動
(2)當接收到回復時,下載延遲會調整到該回復的延遲與之間下載延遲之間的平均值
通過配置settings中的字段來開啟自動限速擴展:
(1)AUTOTHROTTLE_ENABLED:默認為False,設置為True可以啟用該擴展
(2)AUTOTHROTTLE_START_DELAY:初始下載延遲,單位為秒,默認為5.0
(3)AUTOTHROTTLE_MAX_DELAY:設置在高延遲情況下的下載延遲,單位為秒,默認為60
(4)AUTOTHROTTLE_DEBUG:用於啟動Debug模式,默認為False
(5)CONCURRENT_REQUESTS_PER_DOMAIN:對單個網站進行並發請求的最大值,默認為8
(6)CONCURENT_REQUESTS_PER_IP:對單個IP進行並發請求的最大值,如果非0,則忽略CONCURRENT_REQUESTS_PER_DOMAIN設定,使用該IP限制設定。