使用urllib.error进行请求异常处理
1.使用urllib爬取百度搜索html2.urllib.request.Request对象封装请求3.urllib发送get请求_中文传参问题4.urllib发送post请求获取html源代码5.获取动态页面html6.忽略SSL证书验证7.使用fake-useragent库伪装请求头8.urllib自定义opener对象设置代理IP9.爬虫cookie的使用10.保存与读取cookie
11.使用urllib.error进行请求异常处理
12.使用requests库发送get和post请求13.使用Request伪装User-Agent和IP地址14.requests设置超时时间/requests.Session自动保存cookie/verify忽略ssl证书15.re模块的正则表达式规则16.使用re的正则表达式提取腾讯体育新闻摘要17.BeautifulSoup4解析数据18.bs4.find_all()搜索文档树和css选择器提取解析后的html数据19.bs4解析并提取人民网新闻标题数据20.xpath解析数据21.谷歌浏览器的xpath插件安装22.使用re和lxml的xpath功能提取纵横中文网小说推荐榜前3页标题23.JSON数据24.使用jsonpath快速提取json的数据25.提取猫眼电影正在热映电影以及评分26.单线程与多线程爬虫请求异常通常可分为:
- 网络异常
- 服务器异常
- 资源异常
- ......
urllib.error
python的urllib标准库的error子模块包含了URLError
、HTTPError
、ContentTooShortError
3类,分别处理当URL无法打开时抛出的异常、当HTTP请求失败时抛出的异常(继承自URLError)和当下载内容比预期短时抛出的异常。详细信息见官网https://docs.python.org/3.12/library/urllib.error.html
try...except...
在python中try
和except
语句是异常处理机制的核心部分,用于处理程序运行时可能发生的错误(异常)。异常处理允许程序在遇到错误时能返回非异常的返回值,而不是崩溃。其中,try块是希望监控错误的代码块,如果发生了异常,python会终止执行try块中的剩余代码。except块用来捕获和处理try块中发生的异常,可以指定捕获的异常类型,如果不指定异常类型则会捕获所有异常。格式为(伪代码):
try:
尝试执行的代码块
# 如果代码块中发生异常将跳转到except部分
except error_a as e:
当try语句块发生error_a异常时执行的代码
# e是异常实例,可以用来获取错误信息
except error_b as e:
当try语句块发生error_b异常时执行的代码
# 可以捕获多个不同类型的异常
else:
如果try语句块的代码没有发生异常执行时的代码
finally:
无论是否发生异常都会执行的代码
# 常用于清理资源,如关闭文件或网络连接
以状态码为404的的请求异常(服务器找不到资源,url无法打开)为例:
from urllib.request import Request, urlopen
from fake_useragent import UserAgent
from urllib.error import URLError
# 错误的请求地址
url = 'https://www.bazhuayu.com/helpc'
# 封装请求头
headers = {'user-agent': UserAgent().chrome}
# 创建Request对象
req = Request(url, headers=headers)
# 异常处理 HTTPError是URLError的子类,所以URLError的except块也能捕获HTTPError异常
try:
resp = urlopen(req)
except URLError as e:
print(e)
print(type(e))
else:
print(resp.read().decode())
运行结果
HTTP Error 404: Not Found
<class 'urllib.error.HTTPError'>
调试功能
pychram和vscode都提供了强大的调试工具,帮助开发者在编写和测试代码时更容易发现和修复错误。不仅可以查看变量的值,还可以查看变量的属性和方法,可以深入了解对象的状态和行为。例如URLError的实例e为HTTPError类,包含args、characters_written、code、errno等属性,在变量面板能查看对象e有哪些属性以及属性的值,也可以在except块中添加代码例如添加print(e.code)
查看返回的HTTP状态码。
vscode简单调试
pycharm简单调试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现