22

我正在尝试解析使用 Python Requests库完成的 HEAD 请求的结果,但似乎无法访问响应内容。

根据文档,我应该能够从 requests.Response.text 访问内容。这在 GET 请求上对我来说很好,但在 HEAD 请求上返回 None。

GET 请求(有效)

import requests
response = requests.get(url)
content = response.text

内容=<html>...</html>

HEAD 请求(无内容)

import requests
response = requests.head(url)
content = response.text

内容=None


编辑

好的,我很快就意识到 HEAD 请求不应该返回仅内容标头的答案。但这是否意味着,要访问在<head>页面标签中找到的东西,比如<link><meta>标签,必须获取整个文档?

4

3 回答 3

32

根据定义,对 HEAD 请求的响应不包含消息体。

如果你想发送一个 GET 请求,那么,得到一个响应正文。如果您只对响应状态代码和标头感兴趣,请发送 HEAD 请求。

HTTP传输任意内容;HTTP 术语标头与 HTML 完全无关<head>。但是,可以建议 HTTP 仅下载文档的一部分。如果您知道 HTML 代码的长度<head>(或其上限),您可以在请求中包含一个HTTP Range标头,该标头建议远程服务器仅返回一定数量的字节。如果远程服务器支持 HTTP 范围,那么它将提供简化的答案。

于 2012-03-04T12:48:05.483 回答
8

HEAD 没有任何内容!尝试response.headers——这可能就是行动所在。HTTP HEAD 请求不会获得<head>您从 GET 请求中获得的 HTML 响应的元素。我认为那是你的错误。

于 2012-03-04T12:48:46.890 回答
2

HEAD 响应没有正文。它们只返回 HTTP 标头,与使用 GET 请求获得的标头相同。

于 2012-03-04T12:49:24.710 回答