是否可以从 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 是一个包含阻止域的类列表变量,阻止从被阻止域进行任何进一步的下载。似乎工作得很好,感谢@rickgh12hs !
关于python - 是否可以从 scrapys 调度程序队列中删除请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30438650/