Как отправить пользовательский заголовок с urllib2 в HTTP-запросе?
Я хочу отправить пользовательский заголовок "Accept" в моем запросе при использовании urllib2.urlоткрыть(..). Как мне это сделать?
3 ответа:
не совсем. Создание
Request
объект фактически не отправляет запрос, а объекты запроса не имеютRead()
метод. (Также:read()
нижний регистр.) Все, что вам нужно сделать, это пройтиRequest
в качестве первого аргументаurlopen()
и это даст вам ваш ответ.import urllib2 request = urllib2.Request("http://www.google.com", headers={"Accept" : "text/html"}) contents = urllib2.urlopen(request).read()
Я обычно использую:
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
помимо других решений, упомянутых уже, вы можете использовать
add_header
метод.Так что пример, приведенный py @pantsgolem будет:
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()