如何让Python代码在执行requests.get()函数时出现403异常,不终止程序的运行

当使用requests.get()函数发送请求时,如果服务器返回403错误,表示访问被禁止。如果你不希望程序在遇到该错误时自动终止,你可以通过异常处理来捕获并处理该错误。

在Python中,你可以使用try-except语句块来捕获异常,并在捕获到指定的异常后执行特定的操作。对于403错误,你可以捕获requests.exceptions.HTTPError异常,并在except块中处理该异常。

以下是一个示例代码,展示了如何处理403错误:

import requests

url_raw = "your_url"
headers1 = {
    
    "User-Agent": "your_user_agent"}

try:
    response1 = requests.get(url_raw, headers=headers1)
    # 处理响应数据
    # ...
    response1.raise_for_status()  # 检查响应是否正常,如果不正常会抛出HTTPError异常
except requests.exceptions.HTTPError as e:
    if e.response.status_code == 403:
        # 处理403错误
        # ...
        pass  # 可以选择忽略该错误或执行其他操作
    else:
        # 处理其他HTTP错误
        # ...
        raise e  # 如果不是403错误,重新抛出异常

在上面的代码中,try块中的代码是正常的请求发送和处理响应的逻辑。

response1.raise_for_status()用于检查响应是否正常,如果不正常会抛出HTTPError异常。比如403错误就是一种HTTPError异常。
一旦抛出了HTTPError异常,那么程序就会跳转到except块中去处理,执行完except块中的语句后再继续执行后续的语句。

当使用requests.get()函数发送请求时,如果服务器返回的状态码不是200(表示请求成功),requests库会抛出HTTPError异常。这个异常是requests.exceptions.HTTPError类的一个实例,它包含了关于请求失败的详细信息,包括状态码、响应头和响应体等。

在异常处理中,except requests.exceptions.HTTPError as e:这行代码指定了要捕获的异常类型为requests.exceptions.HTTPError,并将异常对象赋值给变量e。这样,在except块中就可以使用变量e来访问异常对象的属性和方法,以便进一步处理该异常。

以下是一些常用的HTTPError异常对象的属性:

  • e.response:包含响应对象,可以通过它来获取响应的状态码、头部信息等。
  • e.response.status_code:响应的状态码,例如403表示禁止访问。
  • e.response.headers:响应的头部信息,可以通过它来获取特定的头部字段。
  • e.response.text:响应的文本内容。

你可以根据这些属性来针对不同的HTTP错误进行适当的处理。在示例代码中,我们使用e.response.status_code来检查异常的状态码是否为403,然后在条件判断中执行特定的处理操作。

需要注意的是,如果异常不是HTTPError类型或者不是由requests库抛出的异常,那么它将不会被捕获到,而是会继续向上层抛出。这就是为什么在代码的最后使用raise e重新抛出异常,以确保其他类型的异常能够被上层处理逻辑捕获。

通过使用except requests.exceptions.HTTPError as e:,你可以捕获requests库抛出的HTTPError异常,并通过异常对象e来获取和处理相关的错误信息。

猜你喜欢

转载自blog.csdn.net/wenhao_ir/article/details/131612543