2012-01-07 182 views

回答

48

沒有爲一個setting

DOWNLOAD_DELAY

默認:0

的時間(以秒爲單位)的下載應該等待 從同一下載連續頁面之前量網站。這可以用 來限制爬網速度,以避免太大的打擊服務器。

DOWNLOAD_DELAY = 0.25 # 250 ms of delay 

閱讀文檔:https://doc.scrapy.org/en/latest/index.html

+0

謝謝。它工作:) – 2012-01-08 06:40:12

+4

如果你把'DOWNLOAD_DELAY = 1',我認爲你不能在一分鐘內得到60頁。它也受下載速度和各種開銷的限制。我會說它只會給你一個上限,所以你不會打太多的目標網站。 – 2014-08-27 18:46:40

7
class S(Spider): 
    rate = 1 

    def __init__(self): 
     self.download_delay = 1/float(self.rate) 

設置頁面的最大量可以在一秒鐘內下載。

+0

你可以添加一個描述或者說一些解釋。按照現狀,我必須爲刪除投票。 – Numeron 2014-08-20 03:48:01

3

延遲可我們在第2集說: -

我們可以同時運行履帶指定的延遲。例如, scrapy抓取樣品--set DOWNLOAD_DELAY = 3(這意味着兩個請求之間3秒的延遲)

或者我們可以在settings.py Globaly指定默認scrapy DOWNLOAD_DELAY = 3

需要在0.25秒的延遲2個請求。

4

如果你想保持下載延遲一秒鐘,設置DOWNLOAD_DELAY=1是做到這一點的方法。

但scrapy還具有自動設置下載延遲AutoThrottle的功能。它會根據Scrapy服務器和您正在爬取的網站的負載自動設置延遲。這比設置任意延遲更好。

閱讀進一步瞭解這個上http://doc.scrapy.org/en/1.0/topics/autothrottle.html#autothrottle-extension
我爬100多個域名,而不是被封閉自動油門開啓

2

除了DOWNLOAD_DELAY,您還可以使用scrapy的自動油門功能, https://doc.scrapy.org/en/latest/topics/autothrottle.html

它根據設置文件更改請求之間的延遲量。如果您爲啓動延遲和最大延遲設置1,則每次請求都會等待1秒。

它的原始目的是改變延遲時間,所以你的機器人的檢測會更困難。

你只需要設置在settings.py如下:

AUTOTHROTTLE_ENABLED = True 
AUTOTHROTTLE_START_DELAY = 1 
AUTOTHROTTLE_MAX_DELAY = 3