47 votes

Comment donner un délai entre chaque requête dans scrapy ?

Je ne veux pas ramper simultanément et être bloqué. Je voudrais envoyer une requête par seconde.

71voto

warvariuc Points 11787

Il existe un paramètre pour ça :

DOWNLOAD_DELAY

Par défaut : 0

Le temps (en secondes) que le téléchargeur doit attendre avant que avant de télécharger des pages consécutives du même site Web. Cette valeur peut être utilisée pour limiter la vitesse d'exploration et éviter de frapper trop fort les serveurs.

DOWNLOAD_DELAY = 0.25    # 250 ms of delay

Lisez la documentation : https://doc.scrapy.org/en/latest/index.html

19voto

Mikhail Korobov Points 6225

Vous pouvez également définir l'attribut "download_delay" sur l'araignée si vous ne souhaitez pas un délai de téléchargement global. Voir http://doc.scrapy.org/en/latest/faq.html#what-does-the-response-status-code-999-means

10voto

Yan.Zero Points 22
class S(Spider):
    rate = 1

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

taux fixe un nombre maximum de pages pouvant être téléchargées en une seconde.

8voto

Mehmet Kurtipek Points 113

En plus de DOWNLOAD_DELAY, vous pouvez également utiliser la fonction AUTOTHROTTLE de scrapy, https://doc.scrapy.org/en/latest/topics/autothrottle.html

Il modifie le délai entre les requêtes en fonction du fichier de configuration. Si vous définissez 1 pour le délai de départ et le délai maximal, il attendra 1 seconde à chaque demande.

Son but initial est de faire varier le temps de retard pour que la détection de votre robot soit plus difficile.

Il vous suffit de le définir dans settings.py comme suit :

AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 1
AUTOTHROTTLE_MAX_DELAY = 3

7voto

Niranjan Sagar Points 769

Délais Peut-on mettre en 2 dit:-

Nous pouvons spécifier le délai lors de l'exécution du crawler. Par exemple, scrapy crawl sample --set DOWNLOAD_DELAY=3 (ce qui signifie un délai de 3 secondes entre deux requêtes).

Ou bien nous pouvons spécifier Globaly dans le settings.py DOWNLOAD_DELAY = 3

par défaut scrapy prend 0.25 secondes de délai entre 2 requêtes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X