Scrapy 中的限制请求

缅甸语

我正在开发一个带有 Scrapy 的蜘蛛,它遍历一个带键的 url。例如,它将使用 url 作为模板(例如 https:\google.com{key})。我遇到了一个问题,我无法在正确的时间停止遍历这些 url。例如,如果我开始收到足够多的失败请求,例如 404,我想终止,这样我就不会发送超出需要的请求。

我试图提高 CloseSpider()。这部分有效。它会停止蜘蛛,但不会在一些请求完成之前停止。

然后我尝试不断地产生请求,同时跟踪有多少请求已执行/失败。问题是我认为 Scrapy 不能从 start_requests 异步运行。

我真的需要以下两种解决方案之一:

1) 一种从 Scrapy 的 start_requests 动态生成结果的方法(从另一篇文章中这似乎不可能)。这样我就可以跟踪当前错误,并且只有在我知道我没有遇到某个错误时才完成生成结果临界点。

2) 当CloseSpider异常抛出时,如何让已经下载的页面通过回调和管道完成处理。这样,任何非 404 都会命中。

缅甸语

我想通了。由于我以键控顺序遍历,期望键最终不存在,我需要配置scrapy以FIFO顺序而不是settings.py中的默认LIFO顺序工作:

    DEPTH_PRIORITY = 1
    SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleFifoDiskQueue'
    SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.FifoMemoryQueue'

我还确保 2 和 3 个深度请求的优先级高于启动请求。然后,通过跟踪 404,我能够在完成所有预期结果的情况下引发 CloseSpider 异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章