今天心情不好 不想多打字 自己看注释吧

 from scrapy.http import HtmlResponse
from twisted.internet import defer
from twisted.internet.error import TimeoutError, DNSLookupError, \
ConnectionRefusedError, ConnectionDone, ConnectError, \
ConnectionLost, TCPTimedOutError
from twisted.web.client import ResponseFailed
from scrapy.core.downloader.handlers.http11 import TunnelError class ProcessAllExceptionMiddleware(object):
ALL_EXCEPTIONS = (defer.TimeoutError, TimeoutError, DNSLookupError,
ConnectionRefusedError, ConnectionDone, ConnectError,
ConnectionLost, TCPTimedOutError, ResponseFailed,
IOError, TunnelError) def process_response(self, request, response, spider):
# 捕获状态码为40x/50x的response
if str(response.status).startswith('') or str(response.status).startswith(''):
# 随意封装,直接返回response,spider代码中根据url==''来处理response
response = HtmlResponse(url=str(response.status), status=200)
return response
# 其他状态码不处理
return response def process_exception(self, request, exception, spider):
# 捕获几乎所有的异常
if isinstance(exception, self.ALL_EXCEPTIONS):
# 在日志中打印异常类型
print('Got exception: %s' % (exception))
# 随意封装一个response,返回给spider
response = HtmlResponse(url='exception')
return response
# 打印出未捕获到的异常
print('not contained exception: %s' % exception)

然后根据返回的url不同就可以在spider中进行各种处理了

最新文章

  1. Message和handler传递对象
  2. photoshop cs5 key
  3. 模式的混合-我們真的需要一次一次的讀配置嗎-MultitonPrototypeFactoryMethod
  4. python2.X和3.X的一些区别【整理中】
  5. supervisor简介
  6. 为什么很多人用keepalived来实现redis故障转移
  7. PHP中::、->、self、parent::、$this操作符的区别
  8. new jQuery.common
  9. JVM性能调优-GC内存模型及垃圾收集算法
  10. Web Service那点事
  11. Python中字符串切片操作
  12. 【转】AC算法详解
  13. UNIX网络编程——Socket粘包问题
  14. 创作型---原型模式(C# ICloneable接口的实现)
  15. June 2. 2018 Week 22nd Saturday
  16. [LeetCode] Wiggle Sort II 摆动排序之二
  17. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) A,B,C
  18. 瀑布 敏捷 精益 devops
  19. leetcode-algorithms-28 Implement strStr()
  20. Spring事务传播属性介绍(一).required 和 reuqires_new

热门文章

  1. 完全卸载VS2015的方法
  2. Oracle数据库软件标准版的一个限制:仅仅能用一个rman channel
  3. android 自己定义ViewGroup实现可记载并呈现选择的ListView
  4. VIM 移动
  5. 如何使用git 生成patch 和打入patch 标签: gitpatch【转】
  6. PHPExcel 使用心得
  7. 纯CSS 实现关闭图标 icon
  8. C Looooops(扩展欧几里得+模线性方程)
  9. hihoCoder 1033
  10. Python 35 进程间的通信(IPC机制)、生产者消费者模型