I'm trying to parse the result of a HEAD request done using the Python Requests library, but can't seem to access the response content.
According to the docs, I should be able to access the content from requests.Response.text. This works fine for me on GET requests, but returns None on HEAD requests.
GET request (works)
import requests
response = requests.get(url)
content = response.text
content = <html>...</html>
HEAD request (no content)
import requests
response = requests.head(url)
content = response.text
content = None
EDIT
OK I've quickly realized form the answers that the HEAD request is not supposed to return content- only headers. But does that mean that, to access things found IN the <head>
tag of a page, like <link>
and <meta>
tags, that one must GET the whole document?
By definition, the responses to HEAD requests do not contain a message-body.
Send a GET request if you want to, well, get a response body. Send a HEAD request iff you are only interested in the response status code and headers.
HTTP transfers arbitrary content; the HTTP term header is completely unrelated to an HTML <head>
. However, HTTP can be advised to download only a part of the document. If you know the length of the HTML <head>
code (or an upper boundary therefor), you can include an HTTP Range header in your request that advises the remote server to only return a certain number of bytes. If the remote server supports HTTP ranges, it will then serve the reduced answer.