Je souhaite envoyer un en-tête "Accept" personnalisé dans ma requête lors de l'utilisation de urllib2.urlopen (..). Comment je fais ça?Comment envoyer un en-tête personnalisé avec urllib2 dans une requête HTTP?
53
A
Répondre
113
Pas tout à fait. La création d'un objet Request
n'envoie pas réellement la requête et les objets Request n'ont pas de méthode Read()
. (Aussi: read()
est minuscule.) Tout ce que vous devez faire est de passer le Request
comme premier argument à urlopen()
et cela vous donnera votre réponse.
import urllib2
request = urllib2.Request("http://www.google.com", headers={"Accept" : "text/html"})
contents = urllib2.urlopen(request).read()
13
J'utilise normalement:
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("http://thewebsite.com", headers=request_headers)
contents = urllib2.urlopen(request).read()
print contents
1
à côté des autres solutions déjà mentionnées, vous pouvez utiliser la méthode add_header
.
Ainsi, l'exemple fourni py @pantsgolem sera:
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()