我需要在scrapy延迟请求。我正在抓取的网页为我提供了"你的数据将在50秒内准备好",时间可以从2秒到60秒,然后我想废弃很多页面(我从请求秒请求中得到一个列表),所以将全局download_delay设置为60秒不是最好的主意。
你可以试试这个
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将是您从响应中获得的时间。