正如标题所述,如果我设置'DOWNLOAD_DELAY':2
,在每个请求中它与time.sleep(2)
有什么不同?
感谢您的帮助。
答案 0 :(得分:1)
DOWNLOAD_DELAY ,是一种限制(以秒为单位)从同一网站上连续下载页面的方法,可以在HERE
与time.sleep()
相比,它取决于DOWNLOAD_DELAY
的实现方式。 time.sleep()会暂停所有执行,直到经过指定的时间为止,这将对您的代码产生不同的影响,具体取决于您和 WHERE 正在使用它。可以在time.sleep
中找到HERE的文档。
如果要减慢页面下载速度,请使用DOWNLOAD_DELAY
,如果要在任何给定时间暂停执行代码,请使用time.sleep
。
答案 1 :(得分:1)
DOWNLOAD_DELAY
是Scrapy设置:
从同一网站下载连续页面之前,下载程序应等待的时间(以秒为单位)。这可以用来限制爬网速度,以避免对服务器造成太大的冲击。
time.sleep
是一个Python库函数,可以给您的代码增加延迟。
Scrapy可以同时下载多个项目(例如,请参见CONCURRENT_ITEMS
或CONCURRENT_REQUESTS_PER_IP
)。 DOWNLOAD_DELAY
将在对目标的请求之间增加延迟,并注意请求之间的睡眠逻辑。使用time.sleep
将需要您自己处理很多逻辑,即while(更多请求):make_a_request(...)time.sleep(2 seconds)等。
首选使用DOWNLOAD_DELAY
,因为您要让Scrapy做到最好。但是,延迟的含义会根据其他设置(例如CONCURRENT_REQUESTS_PER_IP
)而改变:
[I] f
CONCURRENT_REQUESTS_PER_IP
非零,下载延迟是按IP而不是按域强制的。