Python爬虫基础之UrlError
一、urllib.error
python的urllib.error模块主要是应对urllib.request在网络请求过程中出现的异常而定义的异常处理类。主要有URLError和HTTPError两个类,URLError的父类是OSError,HTTPError是URLError的子类。
1.urllib.error.URLError
URLError是OSError的子类,当请求过程中没有网络连接,域名映射的服务器不存在都会抛出异常。
属性reason,说明产生异常的原因,返回一个字符串错误信息或者另外一个异常实例对象。
import urllib.request
import urllib.error try:
request = urllib.request.Request('http://www.baidu.com/')
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))
except urllib.error.HTTPError as e:
print('http error:%s' % e.reason)
except urllib.error.URLError as e:
print('url error:%s' % e.reason)
产生异常:
Request参数Url传入一个不存在的域名地址www123.baidu.com或者直接拔掉网线(禁用网络连接),程序就会抛出URLError
request = urllib.request.Request('http://www123.baidu.com/')
捕捉并打印异常信息:url error:[Errno 11004] getaddrinfo failed
2.urllib.error.HTTPError
HTTPError是URLError的子类,urllib.request.urlopen()请求过程中产生HTTP错误,例如资源不存在、身份授权异常,服务器内部错误等。
属性code,返回http请求的状态码,例如200、404、500等
属性reason,说明产生异常的原因,返回一个字符串错误信息。
属性headers,urllib.request请求触发HTTP Error异常,返回响应的请求头headers信息。
import urllib.request
import urllib.error try:
request = urllib.request.Request('https://www.cnblogs.com/123.html')
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))
except urllib.error.HTTPError as e:
print('http error: http code :{0},error msg :{1}'.format(e.code, e.reason))
except urllib.error.URLError as e:
print('url error:%s' % e.reason)
产生异常:
Request参数Url传入一个不存在的页面地址123.html,请求的资源不存在,程序就会抛出HTTPError异常
request = urllib.request.Request('https://www.cnblogs.com/123.html')
捕捉并打印异常信息:http error: http code :404,error msg :Not Found
Python爬虫基础之UrlError的更多相关文章
- Python爬虫基础
前言 Python非常适合用来开发网页爬虫,理由如下: 1.抓取网页本身的接口 相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁:相比其他动态脚本语言,如perl ...
- python爬虫-基础入门-python爬虫突破封锁
python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过H ...
- python爬虫-基础入门-爬取整个网站《3》
python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...
- python爬虫-基础入门-爬取整个网站《2》
python爬虫-基础入门-爬取整个网站<2> 描述: 开场白已在<python爬虫-基础入门-爬取整个网站<1>>中描述过了,这里不在描述,只附上 python3 ...
- python爬虫-基础入门-爬取整个网站《1》
python爬虫-基础入门-爬取整个网站<1> 描述: 使用环境:python2.7.15 ,开发工具:pycharm,现爬取一个网站页面(http://www.baidu.com)所有数 ...
- Python爬虫基础之认识爬虫
一.前言 爬虫Spider什么的,老早就听别人说过,感觉挺高大上的东西,爬网页,爬链接~~~dos黑屏的数据刷刷刷不断地往上冒,看着就爽,漂亮的校花照片,音乐网站的歌曲,笑话.段子应有尽有,全部都过来 ...
- python 爬虫基础知识一
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 网络爬虫必备知识点 1. Python基础知识2. P ...
- Python爬虫基础(一)——HTTP
前言 因特网联系的是世界各地的计算机(通过电缆),万维网联系的是网上的各种各样资源(通过超文本链接),如静态的HTML文件,动态的软件程序······.由于万维网的存在,处于因特网中的每台计算机可以很 ...
- 【学习笔记】第二章 python安全编程基础---python爬虫基础(urllib)
一.爬虫基础 1.爬虫概念 网络爬虫(又称为网页蜘蛛),是一种按照一定的规则,自动地抓取万维网信息的程序或脚本.用爬虫最大的好出是批量且自动化得获取和处理信息.对于宏观或微观的情况都可以多一个侧面去了 ...
随机推荐
- ansible-playbook(node_exporter)
roles/node_exporter/tasks/main.yml - name: copy package copy: src=node_exporter-0.17.0.linux-amd64.t ...
- sql中检查时间是否重叠
先画一个时间轴,方便理解. 设新的时间块,开始时间为@BeginDate,结束时间为@EndDate.数据库中的数据为BeginDate和EndDate 这样可以直观的看出来,新的时间块插入进来,只需 ...
- Netty 客户端断线重连
client 关闭后会执行 finally 代码块,可以在这里可以进行重连操作 public class NettyClient implements Runnable { private final ...
- [ffmpeg] AVOption
在ffmpeg中,常使用AVOption的API来进行参数设置.AVOption的API主要分为设置参数以及提取参数两种,无论是哪一种API都主要分为两大步骤: 寻找出参数所在的内存位置. 如果是设置 ...
- vue打包静态资源路径不正确的解决办法【转】
vue项目完成打包上线的时候很多人都会碰到静态资源找不到的问题,常见的有两个 1.js,css路径不对 解决办法:打开config/index.js,将其中的assetsPublicPath值改为’. ...
- rk3128 手动挂载 U 盘
2019-04-16 关键字: RK . 挂载.U盘 笔者手里有一块非常原生的运行 Android 4.4 操作系统的 RK3128 开发板.原生到各种功能模块都不能用的地步.今天就遇到一个不按常理出 ...
- web自动化框架如何设计
web自动化框架如何设计po模式总结: 1. 页面对象模型:当页面特别多的时候,代码更好的维护 2. Po是pageObject设计模式,用来管理和维护一组web元素的对象库 3. 每一个page c ...
- 牛客网 272B Xor Path(树上操作)
题目链接:Xor Path 题意:每个顶点的点权为Ai,任意两点路径上点权异或和为Path(i,j),求所有Path(i,j)和. 题解:考虑每个顶点被用到的次数,分以下三种情况: 1.本身和其他顶点 ...
- laravel带参数分页
<!---分页--> <div id="pagination-box"> {{ $list->appends(['mobile'=>$mobil ...
- 实验二 Java面向对象程序设计实验报告
实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验 ...