我正在尝试解析使用Python Requests库完成的HEAD请求的结果,但似乎无法访问响应内容。
根据docs,我应该能够访问requests.Response.text中的内容。这对我的GET请求很好,但在HEAD请求时返回None。
获取请求(有效)
import requests
response = requests.get(url)
content = response.text
content = <html>...</html>
HEAD请求(无内容)
import requests
response = requests.head(url)
content = response.text
content = None
修改
好的我已经很快意识到HEAD请求不应返回仅内容标题的答案。但这是否意味着,要访问在页面的<head>
标记中找到的内容,例如<link>
和<meta>
标记,那么必须获取整个文档?
答案 0 :(得分:20)
按definition,对HEAD请求的响应不包含消息正文。
如果您愿意,请发送GET请求,以获得回复正文。发送HEAD请求iff,您只对响应状态代码和标题感兴趣。
HTTP传输任意内容; HTTP术语标头与HTML <head>
完全无关。但是,可以建议HTTP仅下载文档的一部分。如果您知道HTML <head>
代码的长度(或其上限),则可以在请求中包含HTTP Range标头,建议远程服务器仅返回一定数量的字节。如果远程服务器支持HTTP范围,则它将提供简化的答案。
答案 1 :(得分:7)
HEAD没有任何内容!试试response.headers
- 这可能就是行动的所在。 HTTP HEAD请求不会获取您从GET请求获得的HTML响应的<head>
元素。我认为这是你的错误。
答案 2 :(得分:2)
HEAD回应没有身体。它们只返回HTTP标头,与使用GET请求时相同。