blubiu

My Love

上网不网恋,简直浪费电.


Python爬虫--异常处理


前言:

异常处理。


目录:


1. 异常处理概述

程序在运行的时候难免会遇到各种各样的问题,

如果没有异常处理,那么程序遇到问题的时候就可能奔溃,

这样就非常耗时又麻烦了,

为了避免这种情况发生,就需要开发一个具备异常处理的程序。


2. 常见状态码及含义

状态码 解释
301 Moved Permanently: 重定向到新的URL,永久性
302 Found: 重定向到临时的URL,非永久性
304 Not Modified: 请求的资源未更新
400 Bad Request: 非法请求
401 Unauthorized: 请求未经授权
403 Forbidden: 禁止访问
404 Not Found: 没有找到对应的页面
500 Internal Server Error: 服务器内部出现错误
501 Not Implemented: 服务器不支持实现请求所需要

3. URLError与HTTPError

两者都是异常处理的类,HTTPError 是 URLError 的子类,

HTTPError 有异常状态码与异常原因,

URLError 没有异常状态码,

所以在处理的时候,不能直接使用 URLError 直接代替 HTTPError ,

如果要代替,必须要判断是否有状态码属性。


4. 异常处理实战

URLError 出现的原因:

  1. 连接不上服务器
  2. 远程url不存在
  3. 无网络
  4. 触发 HTTPError

代码:

我们使用 try except 来捕获异常

import urllib.request
import urllib.error   # 导入异常捕获模块

try:
	urllib.request.urlopen("http://")

except urllib.error.URLError as e:

	if hasattr(e,"code"):  # 判断有没有状态码
		print(e.code)
	if hasattr(e,"reason"):  #  reason 是 URLError类中的一个属性,返回错误的原因
		print(e.reason)

总结

异常处理就先到这里吧。