Как отправить пользовательский заголовок с urllib2 в запросе HTTP? - PullRequest
62 голосов
/ 22 декабря 2008

Я хочу отправить свой заголовок «Принять» в моем запросе при использовании urllib2.urlopen (..). Как мне это сделать?

Ответы [ 3 ]

122 голосов
/ 22 декабря 2008

Не совсем. Создание объекта Request фактически не отправляет запрос, а объекты Request не имеют метода Read(). (Также: read() в нижнем регистре.) Все, что вам нужно сделать, это передать Request в качестве первого аргумента urlopen(), и это даст вам ваш ответ.

import urllib2
request = urllib2.Request("http://www.google.com", headers={"Accept" : "text/html"})
contents = urllib2.urlopen(request).read()
15 голосов
/ 15 августа 2015

Я обычно использую:

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)
2 голосов
/ 24 мая 2016

Помимо других уже упомянутых решений, вы можете использовать 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...