2008-12-22 7 views

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()