2012-01-07 11 views

risposta

48

C'è un setting per questo:

DOWNLOAD_DELAY

predefinito: 0

La quantità di tempo (in secondi) che il downloader deve attendere prima di il download di pagine consecutive dalla stessa sito web. Questo può essere utilizzato per limitare la velocità di scansione per evitare di colpire troppo i server.

DOWNLOAD_DELAY = 0.25 # 250 ms of delay 

leggere la documentazione: https://doc.scrapy.org/en/latest/index.html

+0

Grazie. Ha funzionato :) –

+4

Se metti 'DOWNLOAD_DELAY = 1', non penso che tu possa ottenere 60 pagine in un minuto. È anche frenato dalla velocità di download e da tutti i tipi di overhead. Direi che ti concede solo un limite superiore di scraping in modo da non colpire troppo i siti di destinazione. –

7
class S(Spider): 
    rate = 1 

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

tasso fissa un importo massimo di pagine può essere scaricato in un secondo.

+0

Puoi aggiungere una descrizione o una spiegazione di ciò che fa. Allo stato attuale devo votare questa risposta per la cancellazione. – Numeron

3

ritardi possono abbiamo impostato in 2 dice: -

Siamo in grado di specificare il ritardo durante l'esecuzione del cingolato. Es. Scrapy campione crawl --set DOWNLOAD_DELAY = 3 (che significa ritardo di 3 secondi tra due richieste)

Oppure possiamo specificare globaly nel settings.py DOWNLOAD_DELAY = 3

da Scrapy default prende ritardo 0,25 secondi tra 2 richieste.

4

se si desidera mantenere un ritardo di download di esattamente un secondo, l'impostazione di DOWNLOAD_DELAY=1 è il modo per farlo.

Ma scrapy ha anche una funzione per impostare automaticamente i ritardi di download chiamati AutoThrottle. Imposta automaticamente ritardi in base al carico sia del server Scrapy che del sito Web che si sta analizzando. Funziona meglio di un ritardo arbitrario.

Leggi ulteriori informazioni sono riportate a http://doc.scrapy.org/en/1.0/topics/autothrottle.html#autothrottle-extension
ho strisciato più di 100 domini e non stato bloccato con AUTOMANETTA acceso

2

Accanto DOWNLOAD_DELAY, è anche possibile utilizzare la funzione di AUTOMANETTA Scrapy, https://doc.scrapy.org/en/latest/topics/autothrottle.html

Cambia la quantità di ritardo tra le richieste in base al file delle impostazioni. Se imposti 1 sia per il ritardo iniziale che per quello massimo, attenderà 1 secondo in ogni richiesta.

Lo scopo originale è quello di variare i tempi di ritardo in modo che il rilevamento del bot sia più difficile.

Hai solo bisogno di metterlo in settings.py come segue:

AUTOTHROTTLE_ENABLED = True 
AUTOTHROTTLE_START_DELAY = 1 
AUTOTHROTTLE_MAX_DELAY = 3