小编thi*_*007的帖子

动态更改scrapy请求调度器优先级

我正在使用 scrapy 对内部 Web 应用程序执行测试。完成所有测试后,我使用 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
Run Code Online (Sandbox Code Playgroud)

但它不起作用......我在日志中看到删除是“延迟”,但它们在执行过程中被执行。

我想过使用一个中间件,它可以在内存中堆积所有删除 URL,并在spider_idle调用信号时将它们放回去,但我不确定如何执行此操作。

实现这一目标的最佳方法是什么?

python scrapy

5
推荐指数
1
解决办法
1459
查看次数

标签 统计

python ×1

scrapy ×1