gpt4 book ai didi

python - Scrapy DOWNLOAD_DELAY 不适用于顺序请求

转载 作者:太空宇宙 更新时间:2023-11-04 07:05:57 25 4
gpt4 key购买 nike

我目前正在使用 Scrapy Python 库。

首先,我向 Fitbit 的登录页面 (https://www.fitbit.com/login) 发出 FormRequest 调用以登录。然后我向 Fitbit 的 API (https://api.fitbit.com) 发出近 100 个请求。

为了不给 API 带来压力(并且不被禁止!),我想在 settings.py 文件中使用 DOWNLOAD_DELAY 设置请求之间的延迟。但是它不起作用。

我在教程 ( http://scrapy.readthedocs.io/en/latest/intro/tutorial.html ) 中对其进行了测试,它在那里正常工作。

你怎么看?是因为我请求 API(应该处理这些类型的访问)吗?

编辑:这是我的蜘蛛的伪代码:

class FitbitSpider:
start_urls = ["https://www.fitbit.com/login"]

def parse(self, response):
yield scrapy.FormRequest(url,formdata,callback=after_login)

def after_login(self, response):
for i in range(100):
yield scrapy.Request("https://api.fitbit.com/[...]")

编辑 2:这是我的 settings.py 文件:

BOT_NAME = 'fitbitscraper'

SPIDER_MODULES = ['fitbitscraper.spiders']
NEWSPIDER_MODULE = 'fitbitscraper.spiders'

DOWNLOAD_DELAY = 20 #20 seconds of delay should be pretty noticeable

最佳答案

根据 the documentation :

DOWNLOAD_DELAY: The amount of time (in secs) that the downloader should wait before downloading consecutive pages from the same website. This can be used to throttle the crawling speed to avoid hitting servers too hard.

正如我们在那里看到的那样,此配置仅影响来自同一网站的连续页面,这是因为爬虫分配的。默认情况下,scrapy 为每个域设置一个槽(因为每个槽都应该处理自己的速度)。

现在,您还可以使用 meta 变量 download_slot 更改在哪个 slot 上处理请求,因此请确保您不是如果您不知道它能做什么,请使用该变量。

其他设置也会干扰 DOWNLOAD_DELAY,例如:

因此请确保它们未启用,或者您没有尝试在同一个项目中使用这两种设置。

同样重要的是要指出 download_delay 也可以作为 Spider 变量启用,并且它优先于设置中的那个。

关于python - Scrapy DOWNLOAD_DELAY 不适用于顺序请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47994646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com