论一只爬虫的自我修养9:异常处理 – 零基础入门学习Python061

论一只爬虫的自我修养9:异常处理

 

让编程改变世界

Change the world by program


 

异常处理

 

高级语言的一个优秀特性就是它可以从容地处理一个错误,不至于因为一个小错误而导致整个程序崩溃。大部分高级语言处理错误的方法都是通过检测异常、处理异常来实现的,当然Python也不例外。

 

用程序进行互联网访问的时候,出现异常是再正常不过的事情了。比如大家实现一个程序,通过几十个代理ip实现爬虫操作,如果其中一个代理ip突然不响应了,就会报错。这种错误触发率极高,全部代理ip都能用那才是有鬼咧。但是一个出问题并不会影响到整个脚本的任务,所以我们捕获到此类异常的时候,直接诶忽略它就可以了。

 

URLError

 

那我们今天就来谈谈访问网页的异常处理,当urlopen无法处理一个响应的时候,就会引发URLError异常。 通常,没有网络连接或者对方服务器压根儿不存在的情况下,就会引发这个异常。同时,这个URLError会伴随一个reason属性,用于包含一个由错误编码和错误信息组成的元组。

 

HTTPError

 

HTTPError是URLError的子类,服务器上每一个HTTP的响应都包含一个数字的“状态码”。有时候状态码会指出服务器无法完成的请求类型,一般情况下Python会帮你处理一部分这类响应(例如,响应的是一个“重定向”,要求客户端从别的地址来获取文档,那么urllib会自动为你处理这个响应。);但是呢,有一些无法处理的,就会抛出HTTPError异常。这些异常包括典型的:404(页面无法找到),403(请求禁止)和401(验证请求)。

 

这里已经帮大家准备好了HTTP状态码大全,大家可以收藏下,需要的时候方便查询:HTTP 状态码大全

 

因为 Python 默认会自动帮你处理重定向方面的内容(状态码 300 ~ 399 范围),状态码 100 ~ 299 的范围是表示成功,所以你需要关注的是 400 ~ 599 这个范围的状态码(因为它们代表响应出了问题)。其中,出现4xx的状态码,说明问题来自客户端,就是你自己哪里做错了;出现5xx的状态码,那就表示与你无关了,是来自服务器的问题。

 

当出现一个错误的时候,服务器返回一个HTTP错误号和一个错误页面。你可以使用HTTPError实例作为页面返回的响应对象。它同样也是拥有像read(),geturl()和info()这类方法。

 

…… 此处省略N多内容,具体请看视频讲解 ……


为您推荐

报歉!评论已关闭.