Python3爬虫(3)_urllib.error
注:参照https://blog.csdn.net/c406495762/article/details/59488464
Learn_ERROR:
urllib.error可以接收有urllib.request产生的异常。urllib.error有两个方法,URLError和HTTPError。如下图所示:
URLError是OSError的一个子类,HTTPError是URLError的一个子类,服务器上HTTP的响应会返回一个状态码,根据这个HTTP状态码,我们可以知道我们的访问是否成功。例如第二个笔记中提到的200状态码,表示请求成功,再比如常见的404错误等。
1.URLError
让我们先看下URLError的异常,创建文件,编写代码:
from urllib import request
from urllib import error if __name__ == "__main__":
#和原博主一样,找一个并不存在的网址
url = "http://www.baidu.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)
显示:
RESTART: C:\Users\DELL\AppData\Local\Programs\Python\Python36\urllib_test01.py
[Errno 11001] getaddrinfo failed
2.HTTPError
再看下HTTPError异常,编写如下代码:
from urllib import request
from urllib import error if __name__ == "__main__":
#一个不存在的连接
url = "http://www.douyu.com/WittPeng.html"
req = request.Request(url)
try:
responese = request.urlopen(req)
# html = responese.read()
except error.HTTPError as e:
print(e.code)
RESTART: C:\Users\DELL\AppData\Local\Programs\Python\Python36\urllib_test01.py
403
说明请求的资源没有在服务器上找到,有这个服务器,但是有WittPeng.html资源
其实我也打过一段时间的直播,可是观众不送火箭,当然我也不叫WittPeng。
二.URLError和HTTPError混合使用
最后值得注意的一点是,如果想用HTTPError和URLError一起捕获异常,那么需要将HTTPError放在URLError的前面,因为HTTPError是URLError的一个子类。如果URLError放在前面,出现HTTP异常会先响应URLError,这样HTTPError就捕获不到错误信息了。
如果不用上面的方法,也可以使用hasattr函数判断URLError含有的属性,如果含有reason属性表明是URLError,如果含有code属性表明是HTTPError。代码如下:
from urllib import request
from urllib import error if __name__ == "__main__":
#一个不存在的连接
url = "http://www.douyu.com/WittPeng.html"
req = request.Request(url)
try:
responese = request.urlopen(req)
except error.URLError as e:
if hasattr(e, 'code'):
print("HTTPError")
print(e.code)
elif hasattr(e, 'reason'):
print("URLError")
print(e.reason)
输出结果为:
RESTART: C:\Users\DELL\AppData\Local\Programs\Python\Python36\urllib_test01.py
HTTPError
403
Python3爬虫(3)_urllib.error的更多相关文章
- 【Python3 爬虫】03_urllib.error异常处理
urllib.error可以接受来自urllib.request产生的异常.urllib.error有两个方法:①URLError ②HTTPError URLError URLError产生的原因 ...
- Python3 爬虫之 Scrapy 核心功能实现(二)
博客地址:http://www.moonxy.com 基于 Python 3.6.2 的 Scrapy 爬虫框架使用,Scrapy 的搭建过程请参照本人的另一篇博客:Python3 爬虫之 Scrap ...
- python3爬虫系列19之反爬随机 User-Agent 和 ip代理池的使用
站长资讯平台:python3爬虫系列19之随机User-Agent 和ip代理池的使用我们前面几篇讲了爬虫增速多进程,进程池的用法之类的,爬虫速度加快呢,也会带来一些坏事. 1. 前言比如随着我们爬虫 ...
- Python3爬虫系列:理论+实验+爬取妹子图实战
Github: https://github.com/wangy8961/python3-concurrency-pics-02 ,欢迎star 爬虫系列: (1) 理论 Python3爬虫系列01 ...
- python3爬虫中文乱码之请求头‘Accept-Encoding’:br 的问题
当用python3做爬虫的时候,一些网站为了防爬虫会设置一些检查机制,这时我们就需要添加请求头,伪装成浏览器正常访问. header的内容在浏览器的开发者工具中便可看到,将这些信息添加到我们的爬虫代码 ...
- Python3 pip出现Fatal error in launcher: Unable to create process using '"'
Python3 pip出现Fatal error in launcher: Unable to create process using '"' 问题分析: 先python2又安装了pyth ...
- Python3 爬虫之 Scrapy 框架安装配置(一)
博客地址:http://www.moonxy.com 基于 Python 3.6.2 的 Scrapy 爬虫框架使用,Scrapy 的爬虫实现过程请参照本人的另一篇博客:Python3 爬虫之 Scr ...
- python3爬虫--反爬虫应对机制
python3爬虫--反爬虫应对机制 内容来源于: Python3网络爬虫开发实战: 网络爬虫教程(python2): 前言: 反爬虫更多是一种攻防战,针对网站的反爬虫处理来采取对应的应对机制,一般需 ...
- python3爬虫(4)各种网站视频下载方法
python3爬虫(4)各种网站视频下载方法原创H-KING 最后发布于2019-01-09 11:06:23 阅读数 13608 收藏展开理论上来讲只要是网上(浏览器)能看到图片,音频,视频,都能够 ...
随机推荐
- nginx的ngx_http_geoip2模块以精准禁止特定地区IP访问
要求:对网站的信息,比如某个访问节点不想国内或者国外的用户使用,禁止国内或者国外或者精确到某个城市的那种情况. 解决方式:1.Cloudfalre来实现禁止特定国家的ip访问,比较简单,但是需要mon ...
- jquery 全选,反选
<?php foreach ($contents as $item) { ?> <tr> <td><input name="qx" val ...
- Python爬虫:获取JS动态内容
经过一段时间的python学习,能写出一些爬虫了.但是,遇到js动态加载的网页就犯了难.于是乎谷歌.百度,发现个好介绍http://www.jianshu.com/p/4fe8bb1ea984 主要就 ...
- Java 学习笔记之 Return停止线程
Return停止线程: 使用interrupt()和return结合也可以实现停止线程的效果.不过还是建议使用“抛异常“的方法,因为在catch块中可以将异常向上抛,使线程停止的事件得以传播. pub ...
- python编程基础之十一
循环语句:周而复始,在满足某个条件下,重复做相同或类型的事情, 循环语句三要素:循环条件 + 循环体 + 循环条件改变while 条件 : 循环体 循环条件改变... while 条件 : 循环体 循 ...
- 多线程EventWaitHandle -戈多编程
在.NET的System.Threading命名空间中有一个名叫WaitHandler的类,这是一个抽象类(abstract),我们无法手动去创建它,但是WaitHandler有三个子类,这三个子类分 ...
- 洛谷 P3745 [六省联考2017]期末考试
题目描述 有 nnn 位同学,每位同学都参加了全部的 mmm 门课程的期末考试,都在焦急的等待成绩的公布. 第 iii 位同学希望在第 tit_iti 天或之前得知所有课程的成绩.如果在第 tit_ ...
- asp.net 重写OnException返回json或跳转新页面
protected override void OnException(ExceptionContext filterContext) { // 此处进行异常记录,可以记录到数据库或文本,也可以使用其 ...
- Vue-CLI 项目在pycharm中配置
Vue-CLI Vue-CLI 项目在pycharm中配置 第一步 pycharm索引到vue项目的根目录,打开 第二步 安装vue.js插件来高亮 .vue 文件代码(见插图) 第三步 第四步 配置 ...
- RF中for循环
robotframework支持FOR循环语句,语法和Python的语法基本相同,但robotframework中,“FOR”关键字前面需要增加一个“:”,写成“:FOR”,其它与Python的语法相 ...