使用 urllib2.urlopen(..) 时,我想在我的请求中发送一个自定义的“Accept”标头。我怎么做?
问问题
82617 次
3 回答
131
不完全的。创建Request
对象实际上并不发送请求,并且 Request 对象没有Read()
方法。(另外:read()
是小写的。)您需要做的就是将Request
作为第一个参数传递给urlopen()
它,这将给您您的响应。
import urllib2
request = urllib2.Request("http://www.google.com", headers={"Accept" : "text/html"})
contents = urllib2.urlopen(request).read()
于 2008-12-22T02:29:01.813 回答
17
我通常使用:
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)
于 2015-08-15T15:51:41.410 回答
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()
于 2016-05-24T12:50:28.703 回答