使用缓存时,如何在scrapy中重新抓取带有4xx错误代码的页面?

时间:2018-12-23 22:07:26

标签: scrapy

在重新抓取缓存中局部存在的域时,是否有一种方法可以忽略4xx错误代码?

在遇到问题之前,我已经爬行了页面的很大一部分,然后我重新设置为不缓存4xx代码,因为爬行器已停止

Crawled (403) <GET https:/... ['cached']:

将缓存设置更改为:HTTPCACHE_IGNORE_HTTP_CODES = [401, 403, 404]

不幸的是,这似乎迫使我重新抓取没有缓存的页面,因为我现在从日志中获取以下信息:

  

信息:忽略响应<403 https://www ...>:未处理或不允许HTTP状态代码。

无论哪种方式,搜寻器都将在检索缓存的403响应代码时停在同一位置,而现在它们是从非缓存中获取的200。

如何调整设置以继续抓取页面?

或者作为替代,如何清空/保存缓存?因为据我了解的文档,否则我将需要在没有缓存设置的情况下进行覆盖。

3 个答案:

答案 0 :(得分:0)

我能找到的最佳解决方案是更改搜寻器的名称并开始新的搜寻。这可以正常工作,因为它正在使用新的缓存文件夹,但是我的原始问题没有得到解决,因此我不得不重新抓取已经下载到缓存中的页面。

答案 1 :(得分:0)

当您缓存页面时,然后在每个相同的请求上,scrapy转到该缓存的数据,并且如果该页面碰巧被缓存为403或其他任何值,则scrapy不会提供再次爬网的功能。因此,您可以从缓存的数据中删除该页面,或者关闭缓存以再次获取该网页。

答案 2 :(得分:0)