Pregunta

Quiero enviar un encabezado personalizado "Aceptar" en mi solicitud cuando uso urllib2.urlopen(...).¿Cómo puedo hacer eso?

¿Fue útil?

Solución

No exactamente.Creando un Request El objeto en realidad no envía la solicitud y los objetos Solicitud no tienen Read() método.(También: read() está en minúsculas.) Todo lo que necesitas hacer es pasar el Request como primer argumento para urlopen() y eso te dará tu respuesta.

import urllib2
request = urllib2.Request("http://www.google.com", headers={"Accept" : "text/html"})
contents = urllib2.urlopen(request).read()

Otros consejos

I normalmente utilizo:

import urllib2

request_headers = {
"Accept-Language": "en-US,en;q=0.5",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Referer": "http://thewebsite.com",
"Connection": "keep-alive" 
}

request = urllib2.Request("https://thewebsite.com", headers=request_headers)
response = urllib2.urlopen(request).read()
print(response)

Al lado de las otras soluciones ya se ha mencionado, se puede utilizar el método add_header.

Así que el ejemplo proporcionado @pantsgolem py será:

import urllib2
request = urllib2.Request("http://www.google.com")

request.add_header('Accept','text/html')

##Show the header having the key 'Accept'
request.get_header('Accept')

response = urllib2.urlopen(request)
response.read()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top