Wie setze ich Header mit Pythons Urllib?


78

Ich bin ziemlich neu in Pythons Urllib. Ich muss lediglich einen benutzerdefinierten Header für die Anforderung festlegen, die an den Server gesendet wird. Insbesondere muss ich die Header für Inhaltstyp und Berechtigungen festlegen. Ich habe in der Python-Dokumentation nachgesehen, konnte sie jedoch nicht finden.

Antworten:


93

Hinzufügen von HTTP-Headern mit urllib2 :

aus den Dokumenten:

import urllib2
req = urllib2.Request('http://www.example.com/')
req.add_header('Referer', 'http://www.python.org/')
resp = urllib2.urlopen(req)
content = resp.read()

88

Dies funktioniert sowohl für Python 3 als auch für Python 2:

try:
    from urllib.request import Request, urlopen  # Python 3
except ImportError:
    from urllib2 import Request, urlopen  # Python 2

req = Request('http://api.company.com/items/details?country=US&language=en')
req.add_header('apikey', 'xxx')
content = urlopen(req).read()

print(content)

Können wir dasselbe mit Anfragen tun? Q.add_header ('apikey', 'xxx')
user3378649

Was meinst du mit @ user3378649?
Cees Timmerman

2
@ user3378649 kann sein, dass Sie requestsPython-Paket benutzerdefinierte Header verwenden
WeizhongTu

1
DIESE Antwort - tausendmal JA (danke!). Ich habe stundenlang versucht, eine gemeinsame Schnittstelle für Python 2 und 3 zu finden (zwischen urllib, urllib2 und urllib3).
Beorn Harris

18

Verwenden Sie urllib2 und erstellen Sie ein Anforderungsobjekt, das Sie dann an urlopen übergeben. http://docs.python.org/library/urllib2.html

Ich benutze die "alte" Urllib nicht mehr wirklich.

req = urllib2.Request("http://google.com", None, {'User-agent' : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5'})
response = urllib2.urlopen(req).read()

ungetestet....


2

Gehen Sie für mehrere Header wie folgt vor:

import urllib2
req = urllib2.Request('http://www.example.com/')
req.add_header('param1', '212212')
req.add_header('param2', '12345678')
req.add_header('other_param1', 'sample')
req.add_header('other_param2', 'sample1111')
req.add_header('and_any_other_parame', 'testttt')
resp = urllib2.urlopen(req)
content = resp.read()
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.