gpt4 book ai didi

python - 动态更改 scrapy 请求调度程序优先级

转载 作者:太空宇宙 更新时间:2023-11-03 11:32:03 26 4
gpt4 key购买 nike

我正在使用 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 信号时将它们放回内存中,但我不确定该怎么做.

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

最佳答案

  1. 请求的默认优先级是0,所以你设置优先级到50是行不通的
  2. 您可以使用中间件收集(将请求插入您自己的队列,例如,redis set)并忽略(返回 IngnoreRequest Exception)那些“删除”请求
  3. 使用第 2 步中从您的队列加载的请求开始第二次抓取

关于python - 动态更改 scrapy 请求调度程序优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16626328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com