Python3,爬虫的HTTP Error、URL Error及混合使用。
【摘要】 终于知道了爬虫错误的使用方式了。
爬虫常出现的两种error
1. URL ERROR
url error 很常见的,就是url地址不正确,或者失效
我们来看看 代码是怎么实现的
# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-8-20
"""
from urllib import request
from urllib import error
#定义一个不存在的url 地址
url = 'https://www.baidu1.com'
#获取返回结果
req = request.Request(url)
#追加断言
try:
response = request.urlopen(requst)
html = response.read().decode('utf-8')
print(html)
except error.URLError as e:
print(e.reason)
执行后的结果:
[Errno 11001] getaddrinfo failed
这个执行结果意思就是:获取地址错误
2.HTTP Error
# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-8-20
"""
from urllib import request
from urllib import error
#定义一个不存在的url 地址
url = 'https://www.baidu1.com'
#获取返回结果
req = request.Request(url)
#追加断言
try:
response= urllib.request.urlopen(req)
# html = response.read()
except urllib.error.HTTPError as e:
print(f"HTTP Error is :" ,e.code)
同样,看一下运行结果:
HTTP Error is : 403
#code 属性表明 HTTPError
#reason 属性表明 URLError
#403 ⇒请求被服务器拒绝了
3. HTTP Error 和URL Error 混合使用
接下来,我们看一下 同时使用时,是什么情况。
老规矩,上代码:
# -*- coding: utf-8 -*-
# @ auth : carl_DJ
# @ time : 2020-8-20
"""
如果httperr 和urlerr混用,那么需要把HTTPerr放在 urlerr的前面,
因为 httperr 是URlerr 一个子类
可以使用hasstattr函数来判断urlerr含有的属性:
code属性表明 httperror
reason 属性表明 urlerror
"""
from urllib import error
from urllib import request
#定义一个不存在的url地址
url = "http://www.douyu.com/Jack_Cui.html"
req = request.Request(url)
print("----URLError错误信息-------")
try:
response = request.urlopen(req)
html = response.read().decode('utf -8')
print(html)
except error.URLError as e:
print("URLError:%s" %e.reason)
print("\n" )
print("----HTTPError错误信息-------")
try:
response = request.urlopen(req)
except error.HTTPError as a:
print("HTTPError:%s" %a.code)
print("\n" )
print("----URLError和HTTPError混合使用-------")
try:
response = request.urlopen(url)
except error.URLError as s:
if hasattr(s,'code'):
print("HTTPError")
print(s.code)
elif hasattr(s,'reason'):
print("URLError")
print(s.reason)
看一下运行结果:
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)