python_爬虫异常处理

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

猜你喜欢

转载自blog.csdn.net/hantongtonghan/article/details/81331595