如何在scrapy中为每个请求设置延迟?

54 投票
6 回答
55167 浏览
提问于 2025-04-17 09:43

我不想同时发送很多请求被封锁。我想每秒只发送一个请求。

6 个回答

11
class S(Spider):
    rate = 1

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

rate 用来设置每秒钟最多可以下载多少个页面。

20

如果你不想设置全局的下载延迟,可以在爬虫上设置'download_delay'这个属性。具体可以参考这个链接:http://doc.scrapy.org/en/latest/faq.html#what-does-the-response-status-code-999-means

82

这里有一个设置可以用来控制这个:

DOWNLOAD_DELAY

默认值:0

这个设置是指下载器在从同一个网站下载连续页面之前需要等待的时间(单位是秒)。这个功能可以用来限制爬虫的速度,以免对服务器造成过大的压力。

DOWNLOAD_DELAY = 0.25    # 250 ms of delay

可以查看文档了解更多信息:https://doc.scrapy.org/en/latest/index.html

撰写回答