|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
20 爬虫的异常处理实战
一、异常处理概述
爬虫在运行的过程中,很多时候都会遇到这样那样的异常。如果没有异常处理,爬虫遇到异常时就会直接崩溃停止运行。下次再次运行时,又会重头开始。所以,要开发一个具有顽强生命力的爬虫,必须要进行异常处理。
二、常见状态码及含义
状态码就是访问网页时服务器返回的一个状态的标志。
- 200 OK :访问正常
- 301 Moved Permanently :重定向到新的url,永久性
- 302 Found :重定向到临时的url,非永久性
- 304 Not Modified :请求的资源未更新
- 400 Bad Request :非法请求
- 401 Unauthorized :请求未经授权
- 403 Forbidden :禁止访问
- 404 Not Found :没有找到对应页面
- 500 Internal Server Error :服务器内部出现错误
- 501 Not Implemented:服务器不支持实现请求所需要的功能
三、URLError和HTTPError
两者都是异常处理的类,HTTPError类是URLError的子类。HTTPError有异常状态和异常原因,URLError没有异常状态吗。因此,在使用时,不能使用URLError直接代替HTTPError。如果要代替,必须判断是否有状态码属性。
URLError出现的原因:(1)连不上服务器。(2)远程url不存在。(3)无网络。(3)触发HTTPError。
四、异常处理实战
- import urllib.request
- #error模块
- import urllib.error
- try:
- data = urllib.request.urlopen("http://blog.csdn.net/").read().decode("utf-8")
- print(len(data))
- except urllib.error.URLError as err:
- #判断是否有状态码
- if hasattr(err,"code"):
- print(err.code)
- #判断是否有异常原因
- if hasattr(err,"reason"):
- print(err.reason)
复制代码 没有出现异常。本来以前是直接爬不了CSDN博客的,会显示403。现在不知发生了什么。
总的来说,异常处理对于爬虫而言十分重要,它使得爬虫具有顽强的生命力。必须掌握!
|
评分
-
查看全部评分
|