Response.headers - Python Requests

2025年1月5日 | 阅读 4 分钟

Python 是一种多功能编程语言,拥有众多库,可用于各种应用,例如网络抓取、数据检索和 Web 交互。 'requests' 是一个流行的 Python 库,用于发出 HTTP 请求。它提供了一个简单而美观的 API 来发送 HTTP 查询并接收响应。

当您使用 Python 的 'requests' 包发出 HTTP 请求时,您通常会收到一个响应对象。此响应对象具有许多用于访问响应信息的属性和方法,包括状态代码、标头和内容。

“response.headers”属性允许您检索服务器响应您请求的 HTTP 标头。HTTP 标头是键值对,其中包含有关请求或响应的其他信息。常见的标头包括 'Content-Type'、'Content-Length'、'Date' 和 'Server' 等。

以下是使用 'requests' 库中的 'response.headers' 的简单示例。

代码

输出

{
    'Content-Encoding': 'gzip',
    'Cache-Control': 'max-age=604800',
    'Content-Type': 'text/html; charset=UTF-8',
    'Date': 'Mon, 14 Mar 2024 00:00:00 GMT',
    'Expires': 'Mon, 21 Mar 2024 00:00:00 GMT',
    'Last-Modified': 'Mon, 14 Mar 2024 00:00:00 GMT',
    'Server': 'ECS (dcb/7E29)',
    'X-Cache': 'HIT',
    'Content-Length': '606',
    'Connection': 'keep-alive'
}

运行此代码后,它将向 'https://example.com' 发出 GET 请求,获取响应,并打印从服务器接收到的标头。

就像字典一样,也可以通过键访问各个标头

它将显示服务器发送的 'Content-Type' 标头的值。

访问特定标头

就像字典一样,可以使用其键名访问各个标头。例如:

它允许您从响应标头中访问特定信息。

遍历所有标头

如果您想检查或处理响应中收到的所有标头,请使用循环

此循环遍历所有标头,打印出每个标头的名称及其值。

不区分大小写的访问

HTTP 标头不区分大小写,这意味着可以不考虑大小写来访问它们。当您在 Python 的 'requests' 模块中调用 'response.headers' 时,它会将标头存储在一个不区分大小写的字典中。这意味着您可以忽略大小写来查看标头。例如:

处理多值标头

某些标头,例如 'Set-Cookie',可能包含多个值。在这种情况下,'response.headers' 将这些值返回为一个逗号分隔的字符串。如果您需要解析此类标头,可能需要进行进一步处理。例如:

它将 'Set-Cookie' 标头拆分为不同的 cookie,假设它们由逗号和空格分隔。

检查标头是否存在

在访问标头值之前,请确保它存在于响应中。这可以避免在尝试访问不存在的标头时出现问题。

原始 HTTP 标头

如果您需要将原始 HTTP 标头作为字符串进行交互,请使用响应对象的 'raw' 属性

访问 Cookie

如果响应包含 cookie,您可以使用响应对象的 'cookies' 属性检索它们。

它提供了一个 'RequestsCookieJar' 对象,其中包含服务器设置的 cookie,允许您根据需要进行检查和修改。

处理重定向

如果您的请求包含重定向,您可以在每个阶段检查标头。您可以通过启用 'allow_redirects' 设置并查看响应历史记录来完成此操作。

它会打印出重定向链中每个响应的标头。

最后,Python 的 'requests' 模块中的 'response.content' 函数允许您检索 HTTP 响应体的原始字节。当处理非文本内容(如照片和二进制文件)或需要在不解码或解释的情况下管理响应数据时,它特别有用。请记住,'response.content' 返回一个字节字符串,您可能需要根据内容类型将其解码为合适的格式。此外,在处理响应内容时,请始终牢记内容类型和编码,以确保正确处理。'response.content' 使您能够在 Python 应用程序中高效地处理各种 HTTP 响应数据。