我有下面的蜘蛛,基本上要求开始_网址和每个网址在那里,它必须做许多子请求。
def parse(self, response):
print(response.request.headers['User-Agent'])
for info in response.css('div.infolist'):
item = MasterdataScraperItem()
info_url = BASE_URL + info.css('a::attr(href)').get() # URL to subpage
print('Subpage: ' + info_url)
item['name'] = info.css('img::attr(alt)').get()
yield scrapy.Request(info_url, callback=self.parse_info, meta={'item': item})
上面代码中的for循环运行了大约200次,在大约100次迭代之后,我得到了HTTP代码429。
我的想法是将DOWNLOAD_DELAY设置为3.0,但不知何故,这并不适用于循环和scrapy。请求只是直接调用了几百次。
有没有办法在调用scraby.requests的下一次迭代之前等待n秒?
1条答案
按热度按时间uhry853o1#
您可以使用CONCURRENT_REQUESTS限制下载程序同时处理的请求数