当使用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
来获取和处理相关的错误信息。