¿Cómo leo los encabezados de respuesta devueltos por una solicitud PyCurl?Cómo leer el encabezado con pycurl
Respuesta
Existen varias soluciones (por defecto, se eliminan). Aquí está un ejemplo de usando la opción HEADERFUNCTION que le permite indicar una función para manejarlos.
Otras soluciones son las opciones WRITEHEADER (no compatible con WRITEFUNCTION) o configurar HEADER en True para que se transmitan con el cuerpo.
#!/usr/bin/python
import pycurl
import sys
class Storage:
def __init__(self):
self.contents = ''
self.line = 0
def store(self, buf):
self.line = self.line + 1
self.contents = "%s%i: %s" % (self.contents, self.line, buf)
def __str__(self):
return self.contents
retrieved_body = Storage()
retrieved_headers = Storage()
c = pycurl.Curl()
c.setopt(c.URL, 'http://www.demaziere.fr/eve/')
c.setopt(c.WRITEFUNCTION, retrieved_body.store)
c.setopt(c.HEADERFUNCTION, retrieved_headers.store)
c.perform()
c.close()
print retrieved_headers
print retrieved_body
Esto puede o no puede ser una alternativa para usted:
import urllib
headers = urllib.urlopen('http://www.pythonchallenge.com').headers.headers
Anothr alternativa, el uso human_curl: pip human_curl
In [1]: import human_curl as hurl
In [2]: r = hurl.get("http://stackoverflow.com")
In [3]: r.headers
Out[3]:
{'cache-control': 'public, max-age=45',
'content-length': '198515',
'content-type': 'text/html; charset=utf-8',
'date': 'Thu, 01 Sep 2011 11:53:43 GMT',
'expires': 'Thu, 01 Sep 2011 11:54:28 GMT',
'last-modified': 'Thu, 01 Sep 2011 11:53:28 GMT',
'vary': '*'}
al importar 'human_curl' recibo un error que dice' ImportError: pycurl: libcurl link-tiume ssl baqckend (nss) es diferente del tiempo de compilación ssl backend (ninguno/otro) ' –
import pycurl
from StringIO import StringIO
headers = StringIO()
c = pycurl.Curl()
c.setopt(c.URL, url)
c.setopt(c.HEADER, 1)
c.setopt(c.NOBODY, 1) # header only, no body
c.setopt(c.HEADERFUNCTION, headers.write)
c.perform()
print headers.getvalue()
añadir cualquier otra setopts enrollamiento según sea necesario/deseado, como FOLLOWLOCATION.
Esta parece ser la única respuesta que SOLO recupera los encabezados. –
- 1. Encabezados personalizados con pycurl
- 2. ¿Cómo instalo pyCurl?
- 3. Leer X-Remitido-Para encabezado
- 4. pycurl y SSL cert
- 5. Cómo manejar KeyboardInterrupt (Ctrl-c) muy bien con pycurl?
- 6. nginx - leer el encabezado personalizado desde el servidor ascendente
- 7. instalación de pycurl en Windows
- 8. Problemas instalar pycurl en python2.7.0 +
- 9. Instalar pyCurl en ActivePython-2.6?
- 10. ¿Cómo crear spinner con el encabezado dentro?
- 11. pycurl instalados pero no encontraron
- 12. pycurl: RETURNTRANSFER opción no existe
- 13. Cómo leer el archivo JSON con Dojo
- 14. ¿Cómo leer el archivo .arff con R?
- 15. Cómo leer el archivo completo con bitstring
- 16. ¿Cómo puedo mostrar los datos en QTableWidget y leer los datos con encabezado?
- 17. En Scala, ¿cómo leer un archivo CSV simple con un encabezado en su primera línea?
- 18. pycurl equivalente de "rizar --Hojas-binario"
- 19. ¿Cómo puedo leer el contenido del encabezado de disposición de contenido?
- 20. Iniciando sesión y utilizando cookies en pycurl
- 21. ¿Qué buenos tutoriales existen para aprender pycURL?
- 22. ¿Cómo puedo leer el encabezado de autorización de un servicio WCF basado en REST?
- 23. Pycurl sigue imprimiendo en la terminal
- 24. ¿Cómo incluyo el encabezado y el pie de página con el diseño en Zend Framework?
- 25. Vista categorizada de Android con el encabezado
- 26. Encabezado fijo con jquery
- 27. Compatible con el encabezado "Expect: 100-continue" con ASP.NET MVC
- 28. ¿Cómo proxy el encabezado http_x_ssl_client_s_dn?
- 29. Cómo congelar el encabezado GridView?
- 30. ¿Cómo solicitar solo el encabezado HTTP con C#?
Me gustaría utilizar esto sin tener que recuperar los contenidos. ¿Hay una manera de lograr esto? Mi contenido es grande (1.4 GB o similar), y solo necesito saber el tamaño, no el contenido. – Alfe
@Alfe intenta hacer la solicitud '' 'HEAD''' en lugar de' '' GET''', algo así como '' 'c.setopt (pycurl.CUSTOMREQUEST," HEAD ")' '' – Serge
Guau, eso es un retraso seguimiento, pero gracias de todos modos. Pero ahora es hace tanto tiempo ... Bien podría ser que lo hice de esa manera, pero en realidad, no recuerdo: -} – Alfe