2012-01-07 9 views

Respuesta

48

Hay una setting para ello:

DOWNLOAD_DELAY

defecto: 0

La cantidad de tiempo (en segundos) que el descargador debe esperar antes de la descarga de páginas consecutivas de la misma sitio web. Esto se puede usar para acelerar la velocidad de rastreo para evitar golpear demasiado a los servidores.

DOWNLOAD_DELAY = 0.25 # 250 ms of delay 

Leer la documentación: https://doc.scrapy.org/en/latest/index.html

+0

Gracias. Funcionó :) –

+4

Si pones 'DOWNLOAD_DELAY = 1', no creo que puedas obtener 60 páginas en un minuto. También está restringido por la velocidad de descarga y todo tipo de sobrecarga. Diría que solo te da un límite superior raspante para que no llegues demasiado a los sitios de destino. –

7
class S(Spider): 
    rate = 1 

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

tasa fija una cantidad máxima de páginas puede ser descargado en un segundo.

+0

Puede agregar una descripción o alguna explicación de lo que hace esto. Tal como está, tengo que votar esta respuesta para su eliminación. – Numeron

3

que los retrasos pueden fijar en 2 dice: -

Podemos especificar el retardo mientras se ejecuta el rastreador. Eg. scrapy muestra de rastreo --set DOWNLOAD_DELAY = 3 (que significa retardo de 3 segundos entre dos peticiones)

O bien podemos especificar Globaly en el settings.py DOWNLOAD_DELAY = 3

por scrapy defecto toma de retardo de 0,25 segundos entre 2 solicitudes

4

si desea mantener un retraso de descarga de exactamente un segundo, establecer DOWNLOAD_DELAY=1 es la manera de hacerlo.

Pero scrapy también tiene una función para establecer automáticamente los retrasos de descarga llamados AutoThrottle. Establece automáticamente los retrasos en función de la carga del servidor de Scrapy y del sitio web que está rastreando. Esto funciona mejor que establecer un retraso arbitrario.

Lea más sobre esto en http://doc.scrapy.org/en/1.0/topics/autothrottle.html#autothrottle-extension
me he arrastrado más de 100 dominios, y no fué bloqueado con acelerador automático activado

2

lado DOWNLOAD_DELAY, también se puede utilizar la función de mando automático de gases de scrapy, https://doc.scrapy.org/en/latest/topics/autothrottle.html

Cambia la cantidad de retraso entre las solicitudes según el archivo de configuración. Si establece 1 para el retardo tanto inicial como máximo, esperará 1 segundo en cada solicitud.

Su propósito original es variar el tiempo de retardo para que la detección de su robot sea más difícil.

sólo tiene que ponerlo en settings.py de la siguiente manera:

AUTOTHROTTLE_ENABLED = True 
AUTOTHROTTLE_START_DELAY = 1 
AUTOTHROTTLE_MAX_DELAY = 3 
Cuestiones relacionadas