是否可以从 scrapys 调度程序队列中删除请求?

Is it possible to remove requests from scrapys scheduler queue?

是否可以从 scrapy 的调度程序队列中删除请求?我有一个工作例程,可以在一定时间内限制对某个域的爬行。它的工作原理是,一旦达到时间限制,它就不会再产生链接,但由于队列已经包含数千个域请求,我想在达到时间限制后将它们从调度程序队列中删除。

好的,所以我最终遵循了 @rickgh12hs 的建议并编写了我自己的下载器中间件:

from scrapy.exceptions import IgnoreRequest
import tldextract

class clearQueueDownloaderMiddleware(object):
    def process_request(self, request, spider):
        domain_obj = tldextract.extract(request.url)
        just_domain = domain_obj.registered_domain
        if(just_domain in spider.blocked):
            print "Blocked domain: %s (url: %s)" % (just_domain, request.url)
            raise IgnoreRequest("URL blocked: %s" % request.url)

spider.blocked 是一个 class 列表变量,其中包含被阻止的域,阻止从被阻止的域进行任何进一步的下载。看起来效果不错,向 @rickgh12hs 致敬!