【安全合规】python爬虫从0到1 - urllib中的异常

简介: python爬虫从0到1 - urllib中的异常

urllib中的异常处理

在我们写爬虫程序时,若出现url中的错误,那么我们就无法爬取我们想要的内容,对此,我们引入了urllib中的异常处理。image.png


(一)url的组成部分

URL由6个部分组成:

eg:

image.png
  1. 协议(http/https)
  2. 主机(www.baidu.com)
  3. 端口号(80/443)
  4. 路径(s)
  5. 参数(wd=易烊千玺)
  6. 锚点

常见的端口号:image.png一)URLError

通常来说,URLError报错通常为url地址中主机部分的错误:

实例:

url = 'https://www.baidu.com1/'

运行结果:image.png

(二)HTTPError

这个异常的通常是url地址中参数或是路径的错误。

实例:

url = 'https://www.jianshu.com/p/3388cf148dba1'

运行结果:image.png

(三)简介


HTTPError类是URLError类的子类

导入的包urllib.error.HTTPError/urllib.error.URLError

http错误:http错误是针对浏览器无法连接到服务器而增加的出来的错误提示,引导并告诉浏览者该页是出了什么问题。

通过urllib发送请求的时候,有可能会发送失败,这个时候如果想让你的代码更健壮,可以通过try -except进行捕获异常。

(四)Urllib.error 模块

urllib.error 模块为 urllib.request 所引发的异常定义了异常类,基础异常类是 URLError。

urllib.error 包含了两个方法,URLError 和 HTTPError。

URLError 是 OSError 的一个子类,用于处理程序在遇到问题时会引发此异常(或其派生的异常)。

HTTPError 是 URLError 的一个子类,用于处理特殊 HTTP 错误例如作为认证请求的时候,包含的属性 code 为 HTTP 的状态码, reason 为引发异常的原因,headers 为导致 HTTPError 的特定 HTTP 请求的 HTTP 响应头。


(五)异常处理


用try except语句块捕获并处理异常,其基本语法结构如下所示:

image.png

import urllib.request
import urllib.error
url = 'https://www.jianshu.com1/p/3388cf148dba'
# url的组成 eg:https://www.baidu.com/s?wd=易烊千玺
# 1.协议(http/https) 2.主机(www.baidu.com) 3.端口号(80/443) 4.路径(s) 5.参数(wd=易烊千玺) 6.锚点
#  常见的端口号
# http(80) https(443) mysql(3306) oracle(1521) redis(6379) mongodb(27017)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
}
try:
    request = urllib.request.Request(url = url,headers = headers)
    response = urllib.request.urlopen(request)
    content = response.read().decode('utf8')
    print(content)
except urllib.error.HTTPError:
    print('HTTP异常,请稍后!')
except urllib.error.URLError:
    print('URL异常,请稍后!')

image.pngimage.png由于HTTPRError是URLError的子类,所以需先写httperror的异常处理,否则一律认为是URLError的异常。

urllib的异常处理就写到这啦,希望大家都不会出现异常。image.png

相关文章
|
27天前
|
数据采集 存储 开发者
如何动态调整Python爬虫的Request请求延迟
如何动态调整Python爬虫的Request请求延迟
|
24天前
|
数据采集 NoSQL 关系型数据库
Python爬虫去重策略:增量爬取与历史数据比对
Python爬虫去重策略:增量爬取与历史数据比对
|
10天前
|
数据采集 Web App开发 前端开发
Python爬虫中time.sleep()与动态加载的配合使用
Python爬虫中time.sleep()与动态加载的配合使用
|
11天前
|
数据采集 存储 NoSQL
分布式爬虫去重:Python + Redis实现高效URL去重
分布式爬虫去重:Python + Redis实现高效URL去重
|
26天前
|
数据采集 Web App开发 iOS开发
Python 爬虫如何伪装 Referer?从随机生成到动态匹配
Python 爬虫如何伪装 Referer?从随机生成到动态匹配
|
19天前
|
数据采集 XML 存储
Headers池技术在Python爬虫反反爬中的应用
Headers池技术在Python爬虫反反爬中的应用
|
数据采集 数据挖掘 编译器
【Python 基础教程】错误与异常的处理
【Python 基础教程】错误与异常的处理
【Python 基础教程】错误与异常的处理
|
存储 缓存 安全
【python】错误和异常(第三讲)
assert,翻译过来是“断言”之意。assert 是一句等价于布尔真的判定,发生异常就意味着表达式为假。 assert 的应用情景就有点像汉语的意思一样,当程序运行到某个节点的时候,就断定某个变量的值必然是什么,或者对象必然拥有某个属性等,简单说就是断定什么东西必然是什么,如果不是,就抛出错误。......
286 0
【python】错误和异常(第三讲)
|
自然语言处理 Linux 测试技术
【python】错误和异常(第二讲)
处理多个异常,并不是因为同时报出多个异常。程序在运行中,只要遇到一个异常就会有反应,所以,每次捕获到的异常一定是一个。所谓处理多个异常的意思是可以容许捕获不同的异常,有不同的 except 子句处理。......
205 0
【python】错误和异常(第二讲)
|
Linux 云计算 索引
【python】错误和异常(第一讲)
逻辑错误可能会由于不完整或者不合法的输入导致,也可能是无法生成、计算等,或者是其它逻辑问题。当 Python 检测到一个错误时,解释器就无法继续执行下去,于是抛出异常。
333 0
【python】错误和异常(第一讲)