爬虫基础 || 1.4 异常处理与链接解析

本文介绍了Python爬虫中的异常处理,包括URLError和HTTPError的捕获与处理。接着详细讲解了URL链接解析,包括urlparse()、urlunparse()、urlsplit()、urlunsplit()、urljoin()、urlencode()、parse_qs()、parse_qsl()、quote()和unquote()等方法的使用,以及它们在构建和处理URL时的作用。
摘要由CSDN通过智能技术生成

1.异常处理

在已经掌握了基本的爬虫技能,但是如果再发送请求中出现异常,如网络不好,请求被拒等情况,就可能出现报错而终止运行程序。

urllib的error模块定义了由request模块产生的异常。如果出现了问题,request模块便会爆出error模块中定义的异常。现在就使用error模块来处理各种异常。

1.1URLErrror

URLError类来自urllib的error模块,它继承自OSError类,是error异常模块的基类,由request模块所产生的异常都可以通过它来捕获。
它的一个重要属性reason,返回错误原因,有助于我们判断异常类型。

from urllib import request,error
try:
    request.urlopen('https://blog.csdn.net/Watson_Ashin/nothispage')
except error.URLError as e:
    print(e.reason)

==> Not Found

上面我们访问了一个不存在的地址,最终返回的是"Not Found",且程序并没有报错,就是说我们成功处理了异常,而程序依然再运行。

1.2HTTPERROR

它是URLError的子类,专门用来处理HTTP请求错误,比如认证请求失败等问题。它有如下三个属性:

  • code: 返回HETTP状态码,比如404表示网页不存在,500表示服务器内部错误等。
  • reason:返回错误原因
  • headers:返回请求头
from urllib import request,error
try:
    request.urlopen('https://blog.csdn.net/Watson_Ashin/nothispage')
except error.HTTPError as e:
    print(e.reason,e.code,e.headers,sep='\n')

==>输出如下

Not Found
404
Server: openresty
Date: Mon, 10 Feb 2020 07:36:31 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 15600
Connection: close
Vary: Accept-Encoding
Set-Cookie: uuid_tt_dd=10_18823982490-1581320191409-585554; Expires=Thu, 01 Jan 2025 00:00:00 GMT; Path=/; Domain=.csdn.net;
Set-Cookie: dc_session_id=10_1581320191409.605227; Expires=Thu, 01 Jan 2025 00:00:00 GMT; Path=/; Domain=.csdn.net;
ETag: "5e3b798b-3cf0"

上面的代码就返回了错误原因,错误码和请求头。因为URLError是HTTPerror的父类,所以根据规范应该先捕获子类,再捕获父类,所以代码如下:

from urllib import request,error
try:
    request.urlop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值