web-dev-qa-db-fra.com

Comment ajouter un en-tête à l'ouvreur urllib2?

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))    
opener.open('http://abc.com')
opener.open('http://google.com')

Comme vous pouvez le voir, j'utilise ouvreur pour visiter différents sites Web, en utilisant un pot de cookies. Puis-je définir un en-tête pour que chaque fois qu'un site Web le soit, l'en-tête soit appliqué?

33
TIMEX

Vous pouvez ajouter les en-têtes directement à l'objet OpenerDirector renvoyé par build_opener. Du dernier exemple dans les documents urllib2 :

OpenerDirector ajoute automatiquement un en-tête User-Agent à chaque demande. Pour changer cela:

import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.open('http://www.example.com/')

N'oubliez pas non plus que quelques en-têtes standard (Content-Length, Content-Type et Host) sont ajoutés lorsque la demande est transmise à urlopen () (ou OpenerDirector.open ()).

61
senderle
headers = {'foo': 'bar',}
req = urllib2.Request(url, None, headers)
resp = urllib2.urlopen(req)

ou

req = urllib2.Request(url)
req.add_header('foo', 'bar')
resp = urllib2.urlopen(req)
17
Corey Goldberg