Wie kann ich mit urllib2 in einer HTTP-Anforderung einen benutzerdefinierten Header senden?
Frage
Ich mag einen benutzerdefinierten schicken "Accept" Header in meiner Anfrage bei der Verwendung von urllib2.urlopen (..). Wie kann ich das tun?
Lösung
Nicht ganz. ist ein Request
Objekt erstellen nicht tatsächlich die Anfrage senden, und Request-Objekte haben keine Read()
Methode. . (Auch:. read()
ist klein geschrieben) Alles, was Sie tun müssen, ist die Request
als erstes Argument übergeben urlopen()
und das wird Ihnen Ihre Antwort
import urllib2
request = urllib2.Request("http://www.google.com", headers={"Accept" : "text/html"})
contents = urllib2.urlopen(request).read()
Andere Tipps
ich normalerweise verwenden:
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)
Neben den anderen Lösungen bereits erwähnt, könnten Sie add_header
Methode verwenden.
So das Beispiel vorgesehen py @pantsgolem werden:
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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow