1、常见状态码含义
200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
301 被请求的资源已永久移动到新位置。
302 请求的资源现在临时从不同的 URI 响应请求。
400 1、语义有误,当前请求无法被服务器理解。2、请求参数有误。非法请求。
401 当前请求需要用户验证。请求未经授权。
403 服务器已经理解请求,但是拒绝执行它。禁止访问。
404 请求失败,请求所希望得到的资源未被在服务器上发现。没有找到对应页面。
500 服务器遇到了一个未曾预料的状况,无法完成对请求的处理,会在程序码出错时出现。服务器内部出现错误。
501 服务器不支持当前请求所需要的某个功能。无法识别请求的方法。
502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503 由于临时的服务器维护或者过载,服务器当前无法处理请求。
2、URLError与HTTPError
两者都是异常处理类,HTTPError是URLError的子类,HTTPError有异常状态码与异常原因,URLError没有异常状态码,所以,在处理的时候,不能使用URLError直接代替HTTPError。如果要代替,必须要判断是否有状态码属性。
3、异常处理实现
(视频讲解中的这个网址出现403异常,而在自己亲手操作时能顺利完成,不显示异常)
(案例中这个网址应用的意义在于 演示 访问这类存在403异常的网址时,应当如何处理异常,引出后面浏览器伪装技术的研究)
import urllib.error
import urllib.request
try:
urllib.request.urlopen("https://blog.csdn.net")
except urllib.error.URLError as e:
if hasattr(e,"code"):
print(e.code)
if hasattr(e,"reason"):
print(e.reason)
运行后显示:403
Forbidden