我需要在scrapy中延迟请求。我正在抓取的网页为我提供“你的数据将在50秒内准备就绪”,时间可以是2到60秒,然后我想废弃很多页面(我从请求秒请求中得到一个列表)所以设置全球download_delay到60s不是最好的主意。
答案 0 :(得分:0)
您可以尝试this
from scrapy.spider import BaseSpider
from twisted.internet import reactor, defer
from scrapy.http import Request
DELAY = 5 # seconds
class MySpider(BaseSpider):
name = 'wikipedia'
max_concurrent_requests = 1
start_urls = ['http://www.wikipedia.org']
def parse(self, response):
nextreq = Request('http://en.wikipedia.org')
dfd = defer.Deferred()
reactor.callLater(DELAY, dfd.callback, nextreq)
return dfd
在您的情况下,DELAY将是您从回复中获得的时间。