二十一:scrapy中設置下載延時與自動限速


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限制設定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM