Scrapy - 随时随地改变download_delay

时间:2014-07-23 22:25:03

标签: scrapy

我需要在scrapy中延迟请求。我正在抓取的网页为我提供“你的数据将在50秒内准备就绪”,时间可以是2到60秒,然后我想废弃很多页面(我从请求秒请求中得到一个列表)所以设置全球download_delay到60s不是最好的主意。

1 个答案:

答案 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将是您从回复中获得的时间。