urllib.error可以接受来自urllib.request产生的异常。urllib.error有两个方法:①URLError ②HTTPError

URLError

URLError产生的原因

①网络无连接,即本机无法上网

②连接不到特定的服务器

③服务器不存在

运行结果表明:连接超时

HTTPError

HTTPError是URLError的子类,在你利用URLopen方法发出一个请求时,服务器上都会对应一个应答对象response,其中他包含一个数字“状态码”,例如response是一个重定向,需定位到别的地址获取文档,urllib将对此进行处理。

其他不能处理的,URLopen会产生一个HTTPError,对应相应的状态码,HTTP状态码表示HTTP协议所返回的响应的状态。状态码归结如下:

100:继续  客户端应当继续发送请求。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。

101: 转换协议  在发送完这个响应最后的空行后,服务器将会切换到在Upgrade 消息头中定义的那些协议。只有在切换新的协议更有好处的时候才应该采取类似措施。

102:继续处理   由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。

200:请求成功      处理方式:获得响应的内容,进行处理

201:请求完成,结果是创建了新资源。新创建资源的URI可在响应的实体中得到    处理方式:爬虫中不会遇到

202:请求被接受,但处理尚未完成    处理方式:阻塞等待

204:服务器端已经实现了请求,但是没有返回新的信 息。如果客户是用户代理,则无须为此更新自身的文档视图。    处理方式:丢弃

300:该状态码不被HTTP/1.0的应用程序直接使用, 只是作为3XX类型回应的默认解释。存在多个可用的被请求资源。    处理方式:若程序中能够处理,则进行进一步处理,如果程序中不能处理,则丢弃
301:请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源    处理方式:重定向到分配的URL

302:请求到的资源在一个不同的URL处临时保存     处理方式:重定向到临时的URL

304:请求的资源未更新     处理方式:丢弃

400:非法请求     处理方式:丢弃

401:未授权     处理方式:丢弃

403:禁止     处理方式:丢弃

404:没有找到     处理方式:丢弃

500:服务器内部错误  服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现。

501:服务器无法识别  服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。

502:错误网关  作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

503:服务出错   由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复
HTTPError实例产生后会有一个code属性,这就是服务器发送的相关错误号。因为urllib可以为你处理重定向,也就是3开头的代号可以被处理,并且100-299范围的号码指示成功,所以你只能看到400-599的错误号码。

下面我们写一个例子来感受一下,捕获的异常是HTTPError,它会带有一个code属性,就是错误代号,另外我们又打印了reason属性,这是它的父类URLError的属性。

404

Not Found

结果分析:错误代码是404,错误原因是Not Found找不到网页

HTTPError与URLError一起使用

最后值得注意的一点是,如果想用HTTPError和URLError一起捕获异常,那么需要将HTTPError放在URLError的前面,因为HTTPError是URLError的一个子类。如果URLError放在前面,出现HTTP异常会先响应URLError,这样HTTPError就捕获不到错误信息了。

使用hasattr函数判断URLError含有的属性,如果含有reason属性表明是URLError,如果含有code属性表明是HTTPError

【Python3 爬虫】03_urllib.error异常处理相关推荐

  1. Python3 爬虫学习笔记 C01 【基本库 urllib 的使用】

    Python3 爬虫学习笔记第一章 -- [基本库 urllib 的使用] 文章目录 [1.1] urllib 简介 [1.2] urllib.request 发送请求 [1.2.1] urllib. ...

  2. python3爬虫入门教程-Python3爬虫学习入门教程

    本文实例讲述了Python3爬虫相关入门知识.分享给大家供大家参考,具体如下: 在网上看到大多数爬虫教程都是Python2的,但Python3才是未来的趋势,许多初学者看了Python2的教程学Pyt ...

  3. python3爬虫实例代码-Python3爬虫带上cookie的实例代码

    Cookie的英文原意是"点心",它是在客户端访问Web服务器时,服务器在客户端硬盘上存放的信息,好像是服务器发送给客户的"点心".服务器可以根据Cookie来 ...

  4. Python3 爬虫学习笔记 C15【代理的基本使用】

    Python3 爬虫学习笔记第十五章 -- [代理的基本使用] 文章目录 [15.1]代理初识 [15.2]urllib 库使用代理 [15.3]requests 库使用代理 [15.4]Seleni ...

  5. Python3 爬虫学习笔记 C11【数据储存系列 — MongoDB】

    Python3 爬虫学习笔记第十一章 -- [数据储存系列 - MongoDB] 文章目录 [11.1]关于 MongoDB [11.2]MongoDB 基本操作语句 [11.3]连接 MongoDB ...

  6. Python3 爬虫学习笔记 C10【数据储存系列 — MySQL】

    Python3 爬虫学习笔记第十章 -- [数据储存系列 - MySQL] 文章目录 [10.1]MySQL 基本操作语句 数据库操作 表操作 表的结构 表的数据 [10.2]Python 连接 My ...

  7. Python3 爬虫学习笔记 C09【数据储存系列 — 文件储存】

    Python3 爬虫学习笔记第九章 -- [数据储存系列 - 文件储存] 文章目录 [9.1]TXT 文本存储 [9.1.1]基本示例 [9.1.2]打开方式 [9.2]JSON 文件存储 [9.2. ...

  8. Python3爬虫数据入数据库---把爬取到的数据存到数据库,带数据库去重功能

    这是python3实战入门系列的第三篇文章,要学习这一篇需要了解前两篇,要不学起来比较费劲 python3实战入门python爬虫篇001---网页爬虫,图片爬虫,文章爬虫,Python爬虫爬取新闻网 ...

  9. Python3 爬虫之 Scrapy 核心功能实现(二)

    博客地址:http://www.moonxy.com 基于 Python 3.6.2 的 Scrapy 爬虫框架使用,Scrapy 的搭建过程请参照本人的另一篇博客:Python3 爬虫之 Scrap ...

最新文章

  1. NSight Compute 用户手册(下)
  2. A-Webkit第五章:添加成绩
  3. Python基础(4):类
  4. leetcode 242. 有效的字母异位词(Java版)
  5. java反编译,eclipse支持插件
  6. springMVC环境搭建
  7. 网管囧事系列二:又要杀毒,又要防***,网管怎样三头六臂?
  8. 创建第一个Djiago
  9. 空间索引 - 四叉树
  10. 计算机科学自考本科的科目,自考本科计算机专业考哪些
  11. 安全生产计算机考试成绩查询,安全生产在线模拟考试成绩查询
  12. 曲面积分的投影法_曲线曲面积分与重积分知识点汇总
  13. 无法卸载creative cloud桌面应用程序
  14. Google 应用与游戏出海 4 月刊: 带您连线 GDC,赢在发布前!
  15. camera中的VSYNC,HSYNC作用?时序关系?
  16. matlab模拟斜抛运动60,大学物理教学改革论文,关于大学物理教学方法改革-Matlab的妙用相关参考文献资料-免费论文范文...
  17. 有哪些编辑图片加文字的软件?这些软件值得收藏
  18. Risk-V编程,实现快速排序
  19. 禅道 my.php debug,PHP vscode+XDebug 远程断点调试服务器上的代码
  20. android 手机与单片机之间的蓝牙通信

热门文章

  1. 中国城市商业银行产业模式展望及布局规模前景分析报告2021-2027年
  2. 自动化运维之SaltStack实践
  3. opentack-openstack组件及功能(1)
  4. mysql组合索引的命中情况
  5. 《现代操作系统(原书第3版)》pdf
  6. Mysql 练习 总结
  7. HDU 1003——Max Sum(动态规划)
  8. windbg-奔溃生成的dump文件
  9. [转载] 晓说——第31期:无比强大的美国工会
  10. 大厂没有方法论(上)