一、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的更多相关文章

  1. Python爬虫基础

    前言 Python非常适合用来开发网页爬虫,理由如下: 1.抓取网页本身的接口 相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁:相比其他动态脚本语言,如perl ...

  2. python爬虫-基础入门-python爬虫突破封锁

    python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过H ...

  3. python爬虫-基础入门-爬取整个网站《3》

    python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...

  4. python爬虫-基础入门-爬取整个网站《2》

    python爬虫-基础入门-爬取整个网站<2> 描述: 开场白已在<python爬虫-基础入门-爬取整个网站<1>>中描述过了,这里不在描述,只附上 python3 ...

  5. python爬虫-基础入门-爬取整个网站《1》

    python爬虫-基础入门-爬取整个网站<1> 描述: 使用环境:python2.7.15 ,开发工具:pycharm,现爬取一个网站页面(http://www.baidu.com)所有数 ...

  6. Python爬虫基础之认识爬虫

    一.前言 爬虫Spider什么的,老早就听别人说过,感觉挺高大上的东西,爬网页,爬链接~~~dos黑屏的数据刷刷刷不断地往上冒,看着就爽,漂亮的校花照片,音乐网站的歌曲,笑话.段子应有尽有,全部都过来 ...

  7. python 爬虫基础知识一

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 网络爬虫必备知识点 1. Python基础知识2. P ...

  8. Python爬虫基础(一)——HTTP

    前言 因特网联系的是世界各地的计算机(通过电缆),万维网联系的是网上的各种各样资源(通过超文本链接),如静态的HTML文件,动态的软件程序······.由于万维网的存在,处于因特网中的每台计算机可以很 ...

  9. 【学习笔记】第二章 python安全编程基础---python爬虫基础(urllib)

    一.爬虫基础 1.爬虫概念 网络爬虫(又称为网页蜘蛛),是一种按照一定的规则,自动地抓取万维网信息的程序或脚本.用爬虫最大的好出是批量且自动化得获取和处理信息.对于宏观或微观的情况都可以多一个侧面去了 ...

随机推荐

  1. ansible-playbook(node_exporter)

    roles/node_exporter/tasks/main.yml - name: copy package copy: src=node_exporter-0.17.0.linux-amd64.t ...

  2. sql中检查时间是否重叠

    先画一个时间轴,方便理解. 设新的时间块,开始时间为@BeginDate,结束时间为@EndDate.数据库中的数据为BeginDate和EndDate 这样可以直观的看出来,新的时间块插入进来,只需 ...

  3. Netty 客户端断线重连

    client 关闭后会执行 finally 代码块,可以在这里可以进行重连操作 public class NettyClient implements Runnable { private final ...

  4. [ffmpeg] AVOption

    在ffmpeg中,常使用AVOption的API来进行参数设置.AVOption的API主要分为设置参数以及提取参数两种,无论是哪一种API都主要分为两大步骤: 寻找出参数所在的内存位置. 如果是设置 ...

  5. vue打包静态资源路径不正确的解决办法【转】

    vue项目完成打包上线的时候很多人都会碰到静态资源找不到的问题,常见的有两个 1.js,css路径不对 解决办法:打开config/index.js,将其中的assetsPublicPath值改为’. ...

  6. rk3128 手动挂载 U 盘

    2019-04-16 关键字: RK . 挂载.U盘 笔者手里有一块非常原生的运行 Android 4.4 操作系统的 RK3128 开发板.原生到各种功能模块都不能用的地步.今天就遇到一个不按常理出 ...

  7. web自动化框架如何设计

    web自动化框架如何设计po模式总结: 1. 页面对象模型:当页面特别多的时候,代码更好的维护 2. Po是pageObject设计模式,用来管理和维护一组web元素的对象库 3. 每一个page c ...

  8. 牛客网 272B Xor Path(树上操作)

    题目链接:Xor Path 题意:每个顶点的点权为Ai,任意两点路径上点权异或和为Path(i,j),求所有Path(i,j)和. 题解:考虑每个顶点被用到的次数,分以下三种情况: 1.本身和其他顶点 ...

  9. laravel带参数分页

    <!---分页--> <div id="pagination-box"> {{ $list->appends(['mobile'=>$mobil ...

  10. 实验二 Java面向对象程序设计实验报告

    实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验 ...