如何为urllib2 opener添加标题?

时间:2011-06-07 00:20:58

标签: python http header urllib2

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))    
opener.open('http://abc.com')
opener.open('http://google.com')

如您所见,我使用开瓶器访问不同的网站,使用cookie jar。我可以设置一个标题,这样每次有一个网站时,都会应用标题吗?

2 个答案:

答案 0 :(得分:61)

您可以将标头直接添加到OpenerDirector返回的build_opener对象中。从urllib2 docs中的最后一个示例:

  

OpenerDirector会自动为每个请求添加User-Agent标头。要改变这个:

import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.open('http://www.example.com/')
  

另外,请记住,当Request传递给urlopen()(或OpenerDirector.open())时会添加一些标准头文件(Content-Length,Content-Type和Host)。

答案 1 :(得分:17)

headers = {'foo': 'bar',}
req = urllib2.Request(url, None, headers)
resp = urllib2.urlopen(req)

req = urllib2.Request(url)
req.add_header('foo', 'bar')
resp = urllib2.urlopen(req)