如何在一个HTTP请求发送自定义标头的urllib2?

问题描述 投票:62回答:3

我想在我的请求发送定制的“接受”报头使用urllib2.urlopen(..)时。我怎么做?

python header urllib2
3个回答
123
投票

不完全的。创建Request对象不实际发送请求,请求对象没有Read()方法。 (另外:read()是小写)。所有你需要做的是通过Request作为第一个参数urlopen(),并且会给你答复。

import urllib2
request = urllib2.Request("http://www.google.com", headers={"Accept" : "text/html"})
contents = urllib2.urlopen(request).read()

15
投票

我通常使用:

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
投票

旁边的其他解决方案已经提到的,你可以使用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()
© www.soinside.com 2019 - 2024. All rights reserved.