python爬虫学习之路(3) urllib.error异常

本文介绍了如何使用Python的urllib.error模块处理网络请求中的异常,包括URLError和HTTPError两个异常类的区别及应用。通过实例演示了不同类型的异常捕获方式,并提供了获取异常详细信息的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

urllib.error可以捕获有urllib.request产生的异常。urllib.error有两个方法,URLError和HTTPError。
URLError是OSError的一个子类,HTTPError是URLError的一个子类,服务器上HTTP的响应会返回一个状态码,根据这个HTTP状态码,我们可以知道我们的访问是否成功。例如200状态码,表示请求成功,再比如常见的404错误等。
下面我们来学习这两个异常:
一, URLError

from urllib import request
from urllib import error

if __name__ == '__main__':
    # 访问一部不存在的网站
    url = "http://www.bucunzai.com/"
    req = request.Request(url)
    # 捕获异常
    try:
        response = request.urlopen(req)
        html = response.read().decode("utf-8")
        print(html)
    except error.URLError as e:
        # 输出异常
        print(e.reason)

我们可以看见输出的结果是:
这里写图片描述

二, HTTPError
修改了捕获异常的的方法

from urllib import request
from urllib import error

if __name__ == '__main__':
    # 访问一部不存在的网站
    url = "http://www.douyu.com/Qcode.html"
    req = request.Request(url)
    # 捕获异常
    try:
        response = request.urlopen(req)
        html = response.read().decode("utf-8")
        print(html)
    except error.HTTPError as e:
        # 输出异常
        print(e.code)

这里写图片描述

三, URLError和HTTPError混合使用
如果想用HTTPError和URLError一起捕获异常,那么需要将HTTPError放在URLError的前面,因为HTTPError是URLError的一个子类。如果URLError放在前面,出现HTTP异常会先响应URLError,这样HTTPError就捕获不到错误信息了。

四, 其他获取异常信息方法
使用hasattr函数判断URLError含有的属性,如果含有reason属性表明是URLError,如果含有code属性表明是HTTPError。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值