【发布时间】:2018-06-28 03:55:13
【问题描述】:
我正在使用 Scrapy (Python) 编写爬虫,但不知道如何处理某些错误。
我有一个网站有时会返回一个空的正文或一个带有错误消息的正常页面。两个回复都带有标准的 200 HTTP 状态代码。
遇到这种情况我想做的就是告诉Scrapy去
- 不要将响应保存到缓存(我使用的是
HTTPCACHE_ENABLED = True),因为成功请求的内容看起来不同 - 重新安排请求
- 降低请求率(我正在使用
AUTOTHROTTLE_ENABLED = True)
有没有像raise scrapy.TemporaryError 那样引发某个异常的简单方法,还是我必须手动完成所有操作。在后一种情况下,如何从缓存中删除内容或与自动油门模块通信?
我知道我可以在请求上使用dont_cache 来不缓存它们。但通常我确实想缓存我的请求,并且只有在我想保留它时才决定响应。此外,文档还不清楚天气这个标志避免将请求的响应保存到缓存或,如果它也避免从缓存中读取请求...
Autothrottle 使用下载延迟来调整请求速率。 throttling algorithm 将非 200 响应视为失败响应,并且不会减少下载延迟。但是我的请求返回 200 个状态码。所以自动油门无法处理这种情况。必须有办法告诉 autothrottle 使用其限制逻辑并将这些特定请求视为失败。
【问题讨论】:
标签: python scrapy web-crawler scrapy-spider