2017-04-20 7 views
0

Ziel:Während eine Instanz einer Scrapy-Spinne krabbelt, wie können wir die DOWNLOAD_DELAY-Einstellung dynamisch ändern?

Ich möchte mit einer schnellen Rate Anfragen senden, während ich gesperrt bin immer dann, wenn ich eine 200-Antwort erhalten möchte ich die Anforderungsrate zu verlangsamen. (Ich tue dies zu testen, welche IP-Adressen in einem Pool von Proxy-IP-Adressen für eine Domain der schwarze Liste gesetzt werden. Und wie viele Anfragen kann höflich von einem guten Proxy-IP vorgenommen werden.)

DOWNLOAD_DELAY in settings.py

In Scrapy gibt es DOWNLOAD_DELAY Einstellungen, die behandelt, wie schnelle Anforderungen gesendet werden.

Frage 1: Es scheint, dass die Einstellungen nicht geändert werden können, nachdem ein Spider gestartet wurde?

ipdb> spider.crawler.settings.set('DOWNLOAD_DELAY', 3) 
*** TypeError: Trying to modify an immutable Settings object 

Frage 2: Irgendwelche Vorschläge auf einen anderen Ansatz?

Antwort

-1

Ich bleibe auch hier stecken, und finde einen schnellen und schmutzigen Weg, um es zu lösen.

settings.fronzen = False 
# change settings here 
# e.g. settings.set('REQUEST_HEADERS', {'authorization': 'hehe',}, priority=60) 
# don't forget to set priority a integer larger than 40 to override `cmdline` priority 
settings.freeze() 
Verwandte Themen