一.错误复现
二.错误原因
在settings设置了DOWNLOAD_TIMEOUT 之后,用了代理ip等等,就会出现这类报错。
原因是在规定时间内没有请求完,即使已经让他重新请求了他可能还是失败。
三.解决办法
在scrapy中遇到报错:<twisted.python.failure.Failure twisted.internet.error.TimeoutError: User timeout caused connection failure: Getting https://xxx.com took longer than 5.0 seconds..>
解决方法为:
可以把DOWNLOAD_TIMEOUT时间设置长一点,或者取消注释(默认180s),亲测有效!
还有可以在中间件middleware添加如下代码
from twisted.internet.error import TimeoutError
def process_exception(self, request, exception, spider):
if isinstance(exception, TimeoutError):
return request