Je souhaite envoyer un en-tête "Accepter" personnalisé dans ma demande lorsque j'utilise urllib2.urlopen (..). Comment je fais ça?
Pas assez. La création d'un objet Request
n'envoie pas réellement la demande et les objets Request n'ont pas de méthode Read()
. (Aussi: read()
est en minuscules.) Tout ce que vous avez à faire est de passer 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()
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("https://thewebsite.com", headers=request_headers)
response = urllib2.urlopen(request).read()
print(response)
Outre les autres solutions déjà mentionnées, vous pouvez utiliser add_header
méthode.
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()