2011-10-28 8 views
42

Soy bastante nuevo en el urllib de python. Lo que tengo que hacer es establecer un encabezado personalizado para la solicitud que se envía al servidor. Específicamente, necesito establecer los encabezados de Tipo de contenido y Autorizaciones. He investigado la documentación de Python, pero no he podido encontrarla.¿Cómo configuro los encabezados usando el urllib de python?

Respuesta

63

añadiendo cabeceras HTTP usando urllib2:

a partir de los documentos:

import urllib2 
req = urllib2.Request('http://www.example.com/') 
req.add_header('Referer', 'http://www.python.org/') 
resp = urllib2.urlopen(req) 
content = resp.read() 
9

Use urllib2 y cree un objeto Request que luego entregue para abrir. http://docs.python.org/library/urllib2.html

Ya no uso el "viejo" urllib.

req = urllib2.Request("http://google.com", None, {'User-agent' : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5'}) 
response = urllib2.urlopen(req).read() 

no probado ....

41

Por tanto Python 3 y Python 2, esto funciona:

try: 
    from urllib.request import Request, urlopen # Python 3 
except ImportError: 
    from urllib2 import Request, urlopen # Python 2 

q = Request('http://api.company.com/items/details?country=US&language=en') 
q.add_header('apikey', 'xxx') 
a = urlopen(q).read() 

print(a) 
+0

podemos hacer lo mismo con las solicitudes q.add_header ('apikey', 'xxx') – user3378649

+0

¿Qué quiere decir, @ user3378649? –

+1

@ user3378649 puede ser que signifique usar el paquete python 'requests' [headers personalizados] (http://docs.python-requests.org/en/master/user/quickstart/#custom-headers) – WeizhongTu

1

Para hacer varias cabeceras de la siguiente manera:

import urllib2 
req = urllib2.Request('http://www.example.com/') 
req.add_header('param1', '212212') 
req.add_header('param2', '12345678') 
req.add_header('other_param1', 'sample') 
req.add_header('other_param2', 'sample1111') 
req.add_header('and_any_other_parame', 'testttt') 
resp = urllib2.urlopen(req) 
content = resp.read() 
Cuestiones relacionadas