¿Cómo se envía una solicitud HTTP HEAD en Python 2?

Resuelto fuentesjr asked hace 16 años • 11 respuestas

Lo que intento hacer aquí es obtener los encabezados de una URL determinada para poder determinar el tipo MIME. Quiero poder ver si http://somedomain/foo/devolverá un documento HTML o una imagen JPEG, por ejemplo. Por lo tanto, necesito descubrir cómo enviar una solicitud HEAD para poder leer el tipo MIME sin tener que descargar el contenido. ¿Alguien sabe de una manera fácil de hacer esto?

fuentesjr avatar Sep 20 '08 13:09 fuentesjr
Aceptado

urllib2 se puede utilizar para realizar una solicitud HEAD. Esto es un poco mejor que usar httplib ya que urllib2 analiza la URL por usted en lugar de requerir que la divida en nombre de host y ruta.

>>> import urllib2
>>> class HeadRequest(urllib2.Request):
...     def get_method(self):
...         return "HEAD"
... 
>>> response = urllib2.urlopen(HeadRequest("http://google.com/index.html"))

Los encabezados están disponibles a través de Response.info() como antes. Curiosamente, puedes encontrar la URL a la que fuiste redirigido:

>>> print response.geturl()
http://www.google.com.au/index.html
doshea avatar Jan 15 '2010 10:01 doshea

editar : Esta respuesta funciona, pero hoy en día solo debes usar la biblioteca de solicitudes como se menciona en otras respuestas a continuación.


Utilice httplib .

>>> import httplib
>>> conn = httplib.HTTPConnection("www.google.com")
>>> conn.request("HEAD", "/index.html")
>>> res = conn.getresponse()
>>> print res.status, res.reason
200 OK
>>> print res.getheaders()
[('content-length', '0'), ('expires', '-1'), ('server', 'gws'), ('cache-control', 'private, max-age=0'), ('date', 'Sat, 20 Sep 2008 06:43:36 GMT'), ('content-type', 'text/html; charset=ISO-8859-1')]

También hay una opción getheader(name)para obtener un encabezado específico.

Eevee avatar Sep 20 '2008 06:09 Eevee

Manera obligatoria Requests:

import requests

resp = requests.head("http://www.google.com")
print resp.status_code, resp.text, resp.headers
K Z avatar Oct 21 '2012 11:10 K Z

Creo que también debería mencionarse la biblioteca de Solicitudes .

daliusd avatar Sep 12 '2011 12:09 daliusd