[关闭]
@songying 2017-12-18T21:17:59.000000Z 字数 1285 阅读 1257

urllib.error

python库


urllib.error包含了urllib.request引发的异常类,这些异常类的基本类是URLError

在该模块中包含三个异常类: URLError, HTTPError, ContentTooShortError.

URLError

OSError的子类

引发的原因:

  1. 网络无连接,即本机无法上网
  2. 连接不到特定的服务器
  3. 服务器不存在
  1. reason # URLError的属性,表示引发该异常的原因

HTTPError

urlopen可能会产生一个HTTPError,对应相应的状态吗,HTTP状态码表示HTTP协议所返回的响应的状态。

  1. code # 对应的状态码
  2. reason # 产生该异常的原因
  3. headers # 导致HTTPError的HTTP请求的请求头

常见状态码

  1. 100:继续 客户端应当继续发送请求。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。
  2. 101 转换协议 在发送完这个响应最后的空行后,服务器将会切换到在Upgrade 消息头中定义的那些协议。只有在切换新的协议更有好处的时候才应该采取类似措施。
  3. 102:继续处理 WebDAVRFC 2518)扩展的状态码,代表处理将被继续执行。
  4. 200:请求成功 处理方式:获得响应的内容,进行处理
  5. 201:请求完成,结果是创建了新资源。新创建资源的URI可在响应的实体中得到 处理方式:爬虫中不会遇到
  6. 202:请求被接受,但处理尚未完成 处理方式:阻塞等待
  7. 204:服务器端已经实现了请求,但是没有返回新的信 息。如果客户是用户代理,则无须为此更新自身的文档视图。 处理方式:丢弃
  8. 300:该状态码不被HTTP/1.0的应用程序直接使用, 只是作为3XX类型回应的默认解释。存在多个可用的被请求资源。 处理方式:若程序中能够处理,则进行进一步处理,如果程序中不能处理,则丢弃
  9. 301:请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源 处理方式:重定向到分配的URL
  10. 302:请求到的资源在一个不同的URL处临时保存 处理方式:重定向到临时的URL
  11. 304:请求的资源未更新 处理方式:丢弃
  12. 400:非法请求 处理方式:丢弃
  13. 401:未授权 处理方式:丢弃
  14. 403:禁止 处理方式:丢弃
  15. 404:没有找到 处理方式:丢弃
  16. 500:服务器内部错误 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现。
  17. 501:服务器无法识别 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
  18. 502:错误网关 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
  19. 503:服务出错 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。

一点注意

由于HTTPErrorURLError的子类,因此在捕捉异常时,应该先捕捉子类异常,再捕捉父类异常。

  1. try:
  2. ...
  3. except error.HTTPError as e:
  4. ...
  5. except error.URLError as e:
  6. ...
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注