我正在使用 scrapy 在内部网络应用程序上执行测试。完成所有测试后,我使用 CrawlSpider 到处检查,并为每个响应运行 HTML 验证器并查找 404 媒体文件。
它工作得很好,除了这个:最后的抓取,GET
随机顺序的东西......所以,执行 DELETE 操作的 URL 在其他操作之前被执行。
我想在最后安排所有删除。我尝试了很多方法,使用这种调度程序:
从scrapy导入日志
class DeleteDelayer(object):
def enqueue_request(self, spider, request):
if request.url.find('delete') != -1:
log.msg("delay %s" % request.url, log.DEBUG)
request.priority = 50
但它不起作用......我在日志中看到删除被“延迟”,但它们在执行期间被执行。
我想过使用一个中间件,它可以在内存中堆积所有删除 URL,并在spider_idle
调用信号时将它们放回原处,但我不确定如何执行此操作。
实现这一目标的最佳方法是什么?