Je ne veux pas ramper simultanément et être bloqué. Je voudrais envoyer une requête par seconde.
Réponses
Trop de publicités?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
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
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
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.
- Réponses précédentes
- Plus de réponses