Python Requests模块的异常处理2025年1月5日 | 阅读 7 分钟 引言在本教程中,我们将学习 Python Requests 模块的异常处理。Python Requests 是一个流行的库,用于在 Python 中发送 HTTP 请求。它提供了一种简单自然的方式来与网站和 API 进行交互。然而,与其他函数一样,在使用请求模块时正确处理异常非常重要。通过使用自定义处理,您可以礼貌地修复错误,防止程序崩溃或获利。本教程将介绍一些最佳实践,并探讨 Python 请求模块中异常处理的重要性。我们将使用 Python 的 try 和 except 函数来检测请求模块中发生的异常。
什么是异常?Python 中的异常是运行时处理正则表达式的事件。当遇到异常时,程序必须失败并跳转到特殊处理块。您可以使用自定义处理来捕获和管理这些异常。请求模块在处理 HTTP 请求时会抛出一些异常。如果您了解这些异常,就可以修复更多错误。您可能会遇到以下异常: 1. ConnectionError 当无法访问服务器时,会发生此异常。这可能是由多种原因引起的,例如 DNS 解析问题或连接被拒绝。 2. TooManyRedirects 当请求返回的重定向次数超过允许次数时触发。当服务器将客户端重定向到另一个 URL 时会发生重定向。 3. Timeout 请求期间没有响应。这可能是由于服务器响应缓慢或网络问题造成的。 4. RequestException 默认异常类,特定于请求模块。它包括进行请求时可能发生的各种类型的异常。 5. HTTPError 针对 HTTP 响应错误(状态码 400 及以上)进行改进。这意味着服务器以错误代码响应。 程序代码首先,我们需要通过发送请求来检查连接。代码如下: 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: 200 程序代码 在这里,我们尝试解析 URL,然后使用 raise_for_status() 函数将其传递给 Python 请求模块。如果测试部分成功,我们将收到 200 的响应;如果页面我们请求的页面不可用,则会发生 HTTP 错误,由 Request 模块的 HTTPError 异常处理;您可能会收到 404 错误。代码如下: 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: Here occurs HTTP Error 404 Client Error: Not Found for url: https://www.google.com//hii The response code is: <Response [404]> 程序代码 您可以使用请求模块中的自定义异常,即 requests.exceptions.RequestException。一般异常处理的程序代码如下: 输出 您可能会注意到,现在向请求模块传递了一个“timeout”参数。我们可以为连接请求的响应设置时间限制。现在,我们在 Python 中编译上述代码,并在成功编译后运行它。输出如下: Exception request 程序代码 在上面的程序中,我们注意到现在向请求模块传递了一个“timeout”参数。我们可以为连接请求的响应设置时间限制。如果未发生这种情况,请求将捕获它。我们可以使用 requests.exceptions.ReadTimeout 异常。让我们找一个响应迅速的网站来证明这一点。 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: The response is: <Response [200]> 如果我们更改 timeout = 0.01,那么相同的代码将返回,因为请求速度不会很快。 程序代码 这里,我们举一个缺少 schema 异常的例子。另一个错误是我们没有在 URL 中指定 HTTPS 或 HTTP。例如,要捕获此异常请求,我们使用 requests.exceptions.MissingSchema。在此程序代码中,我们将显示缺少 schema 异常。代码如下: 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: There is Missing schema which includes http or https 程序代码 这里,我们举一个连接错误异常的例子。假设您有一个不存在的网站。由于这里没有互联网连接,即使无法建立连接,也会发生错误。在此程序代码中,我们将显示连接错误异常。代码如下: 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: Connection error is occurring here 程序代码 在最后一个块中,定义了即使抛出异常也应始终执行的代码。它通常用于清理任务,如释放或注册。程序代码如下: 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: The request is successful Cleaning up the code 程序代码 异常处理需要的不只是打印错误消息。为了获得良好的结果并检测错误,必须正确编写异常。您可以为此目的使用 Python logging 模块。程序代码如下: 输出 现在,我们在 Python 中编译上述代码,并在成功编译后运行它。在此示例中,logging.error() 方法用于将异常以 ERROR 级别记录到名为“error.log”的文件中。记录异常允许您稍后查看和解决问题。输出如下: Request is successfully done! 程序代码 我们在这里汇总了到目前为止的所有尝试,目的是根据其自身优点解决异常。例如,当针对此 URL 运行此代码时,url= "https://www.hiii.com",将抛出一个异常请求。但是当没有连接时,requests.exceptions.ConnectionError 会打印一个连接错误,而当没有连接时,正常的异常请求会由 requests.exceptions.RequestException 处理。 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: HTTP Error has occurred 436 Client Error: status code 436 for url: https://www.hiii.com/ 结论在本教程中,我们将学习 Python Requests 模块的异常处理。通过了解常见异常、使用 try-except 块以及处理自定义异常和记录错误,异常对于解决性能问题和确保使用 Python Requests 模块时的代码可靠性至关重要。您可以创建能够处理意外事件的可靠应用程序。在设置和处理异常时,始终考虑您的具体用例。通过正确的异常处理,您可以提高 Python 应用程序的稳定性和质量。 下一个主题Exec-in-python |
Python 是一种强大的编程语言,为高效的文档控制和自动化提供了相当多的技能。使用 Python,您可以轻松地将文档从一个目录复制到另一个目录,使文档备份、文件组织和数据迁移等任务变得轻而易举。Python 的...
阅读 4 分钟
?字符串填充是编程中主要在 Python 等语言中使用的一个概念,通过添加额外的字符来更改字符串的长度。此选项通常用于确保数据类型(例如在同一用户中显示的信息)的排序或排序……
7 分钟阅读
模拟在研究各种现象、预测行为和决策过程中已被证明非常有价值。Python 受众将发现 SimPy 是他们最喜欢的库,它专为使用基于过程的建模技术对离散事件过程进行建模而设计。API 的简单性以及...
阅读 4 分钟
简介:在本教程中,我们将学习如何使用Python进行鼠标和键盘自动化。这里使用了Pyautogui库。该库允许您控制鼠标和键盘功能。它是一个适用于人类的跨平台GUI自动化Python模块。由于它是一个第三方库....
5 分钟阅读
简介 Python中的ops库旨在简化事件驱动程序的创建和控制,尤其是运行在Juju环境中的charm。它使开发人员无需为观察事件、响应环境变化以及与编写其他应用程序或服务进行通信的困难而烦恼……
阅读 6 分钟
高斯滤波器,或高斯模糊,是一种图像处理滤波器,用于通过模糊图像来减少噪声和使图像平滑。它就像在蛋糕上轻轻地涂上一层糖霜,使其看起来更平滑。该滤波器应用...
7 分钟阅读
Python 是一种动态类型且高度适应性的编程语言。它已成为软件开发领域的中坚力量。Python 以其可读且简洁的语法而闻名,能够进行高效且复杂的编写,使其成为新手和经验丰富的程序员的完美选择。它的...
阅读 4 分钟
简介 在处理数据的领域,Python 是一个出色的工具。凭借其广泛的库和框架,Python 为用户提供了海量的工具来出色地处理数据。编程中的一项广泛活动是将列表呈现为...
阅读 8 分钟
Python 中 pydantic.constr() 方法简介 Pydantic 的 `pydantic.constr()` 方法是 Pydantic 库的关键组件,因为它允许对数据模型中的字符串字段进行约束。可以使用正则表达式结合额外的标准进行字符串验证,例如...
阅读 4 分钟
《猜字游戏》:想象一下您可能和朋友一起玩的经典猜词游戏。一个人选择一个单词或几个单词,其他人必须在一定次数的尝试中猜出它是什么。这是一个快速、简单且具有教育意义的游戏,通常...
21 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India