使用URLError进行异常处理

123 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 16 天,点击查看活动详情

 程序执行时,有时候会发生异常,那么该如何处理这些异常就成为了一大问题,在爬虫过程中也会出现异常,那它有什么好的解决办法呢?下面来介绍URLError来进行异常的处理:

1)要使用URLError,那么第一步就是导入对应的包——urllib的error模块。

2)类似java的异常处理,python爬虫需要使用try-except语句进行异常处理,try内编写执行代码,except中用来捕获异常,对于异常的处理也是在此进行编写。

代码示例

import urllib.request
import urllib.error
try:
    urllib.request.urlopen("http://blog.csdn.net")
except urllib.error.URLError as e:
    print(e.code)
    print(e.reason)

 由于CSDN设置了反爬,除非模拟浏览器进行爬取,否则会出现错误,这里可以使用urllib.error.URLError捕获异常,自定义异常处理代码。

不同状态码极其含义:200(正常访问)、301(重定向)、302 (重定向到临时URL)、304(所请求的资源没有更新)、400(非法访问)、401(未授权的请求)、403(访问被禁止)、404(找不到内容)、500(服务器内部错误)、501(服务器不支持的功能),了解这些状态码就能在遇到时尽快找到原因。

 上面程序的运行后返回403状态码,这个异常我们是使用URLError来接收的,这个异常包括了连接不上服务器、远程URL不存在、无网络、触发了HTTPError异常,我们可以排除前三种异常,直接确定是HTTPError异常,那么我们可以进一步修改代码,使用HTTPError来处理所抛出的异常,但这样写并不是一个完善的写法,如果换一个网站可能会出现其他错误,这时候就不能正常捕获到异常了,可以使用URLError处理异常,并添加一个判断区分e.code和e.reason来进行兼顾。