【问题标题】:How do I add a header to urllib2 opener?如何向 urllib2 开启程序添加标题?
【发布时间】:2011-06-07 00:20:58
【问题描述】:
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))    
opener.open('http://abc.com')
opener.open('http://google.com')

如您所见,我使用 opener 访问不同的网站,使用 cookie jar。我可以设置一个标头,以便每次访问网站时都应用标头吗?

【问题讨论】:

标签: python http header urllib2


【解决方案1】:

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

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

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

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

【讨论】:

  • @PiotrDobrogost,公平地说,这个特殊的功能没有被充分记录。 OpenerDirector 类条目是裸露的;以上信息非常很容易错过。
【解决方案2】:
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)

【讨论】:

  • opener 是一个完全不同的对象,在这种情况下你不能使用Request
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 2018-08-21
相关资源
最近更新 更多