Scrapy请求报错捕获异常解决
对于设置了代理的爬取,可能会出现TimeoutError, TCPTimedOutError, ConnectionRefusedError, ResponseNeverReceived, TunnelError等错误。
对此我的解决方式是在下载中间件中设置捕获异常来解决。
打开Middleware文件,找到下载中间件,在process_exception中自定义自己的异常解决方式。
先导入异常模块:
from twisted.internet.error import TimeoutError, TCPTimedOutError, ConnectionRefusedError
from twisted.web._newclient import ResponseNeverReceived
from scrapy.core.downloader.handlers.http11 import TunnelError
class WeiboSpiderMiddleware(object):
def process_exception(self, request, exception, spider):
if isinstance(exception, (TimeoutError, TCPTimedOutError, ConnectionRefusedError, ResponseNeverReceived, TunnelError)): #判断为那种异常类型
pass #自定义异常处理方式
return requet #重新请求
如有解决问题不妨点点关注,博主不定期更新Python爬过的坑