📅  最后修改于: 2023-12-03 15:34:04.092000             🧑  作者: Mango
当使用 Python 的 requests 库发送 GET 请求时,若所请求的资源返回 404 错误,请求就会失败。在这种情况下,程序可能会输出一个错误信息,例如“找不到所请求资源的适当表示”。
但是,这个错误信息并没有提供足够的信息帮助我们解决此问题。在本文中,我们将讨论如何处理此问题,并找到更有用的错误信息。
首先,我们可以使用 try-except 语句来捕获异常并打印更通用的错误消息。
import requests
url = "https://example.com/missing-page"
try:
response = requests.get(url)
response.raise_for_status()
except requests.HTTPError as http_err:
print(f"HTTP error occurred: {http_err}")
except Exception as err:
print(f"Other error occurred: {err}")
else:
print("Success")
在此示例中,我们使用 response.raise_for_status()
来检查响应是否返回 404 错误,并将异常转换为更通用的 HTTPError。如果请求成功,我们输出 "Success"。
这种方法的另一个好处是在发生错误时,我们可以获得更多有用的信息,例如所请求的 URL 和服务器返回的错误消息。
接下来,我们可以查看服务器返回的完整响应内容,而不仅仅是错误消息。我们可以使用 .content
属性访问响应内容。
import requests
url = "https://example.com/missing-page"
try:
response = requests.get(url)
response.raise_for_status()
except requests.HTTPError as http_err:
print(f"HTTP error occurred: {http_err}")
print(response.content)
except Exception as err:
print(f"Other error occurred: {err}")
else:
print("Success")
在此示例中,我们输出服务器返回的完整响应内容,而不仅仅是错误消息。
最后,我们可以使用更复杂的逻辑来处理不同类型的错误,并输出更具体的错误消息。
import requests
url = "https://example.com/missing-page"
try:
response = requests.get(url)
response.raise_for_status()
except requests.HTTPError as http_err:
if response.status_code == 404:
print(f"The requested page could not be found: {url}")
elif response.status_code == 403:
print(f"Access denied to the requested page: {url}")
else:
print(f"HTTP error occurred: {http_err}")
print(response.content)
except requests.exceptions.RequestException as err:
print(f"Other error occurred: {err}")
else:
print("Success")
在此示例中,我们首先检查响应的状态码以确定错误的类型,并输出具体的错误消息。我们还使用 requests.exceptions.RequestException
处理更普遍的异常情况,并输出更通用的错误消息。如果请求成功,我们输出 "Success"。
总结:
当使用 Python 的 requests 库发送 GET 请求时,若所请求的资源返回 404 错误,程序可能会输出“找不到所请求资源的适当表示”的错误消息。为了解决此问题,我们可以使用 try-except 语句来捕获异常并打印更通用的错误消息。我们还可以查看服务器返回的完整响应内容,并使用更复杂的逻辑来处理不同类型的错误,并输出更具体的错误消息。