Python爬虫学习:使用urllib(error)

文章目录

    • 1. URLError
    • 2. HTTPError

1. URLError

from urllib import request,error
url = 'http://ww.ba2idu.com'
try:
    response = request.urlopen(url)
except error.URLError as e:
    print(e.reason)

URLError类来自urllib库的error模块,它继承自OSError类,是error异常模块的基类,有request模块产生的异常都可以通过捕获这个类来处理,它具有一个属性reason,返回错误的原因
通过捕获这个异常,程序没有直接报错,可以避免程序异常终止,使异常得到了有效控制

2. HTTPError

它是URLError的子类,专门用来处理HTTP请求错误,比如认证请求失败,具有三个属性:
code:返回HTTP的状态码(404表示网页不存在,500表示服务器内部错误等)
reason:同父类一样,用于返回错误的原因
headers:返回请求头

from urllib import request,error

url = 'https://blog.csdn.ne'
try:
    response = request.urlopen(url)
except error.HTTPError as e:
    print(e.reason,e.code,e.headers,sep='\n')

Python爬虫学习:使用urllib(error)_第1张图片由于URLError是HTTPError的父类,所以可以先选择捕获子类的错误,再去捕获父类的错误,所以以上述代码的更好写法为:

from urllib import request,error
url = 'https://blog.csdn.ne'
try:
    response = request.urlopen(url)
except error.HTTPError as e:
    print(e.reason,e.code,e.headers,sep='\n')
except error.URLError as e:
    print(e.reason)
else:
    print("Request Successfully")

这样就可以先捕获HTTPError,获取它的错误状态码,原因,headers等信息。如果不是HTTPError异常,就会捕获URLError异常,输出错误原因

你可能感兴趣的:(#,Python,爬虫学习)