如何为urllib2的opener添加头部?

33 投票
2 回答
57399 浏览
提问于 2025-04-16 19:04
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))    
opener.open('http://abc.com')
opener.open('http://google.com')

如你所见,我使用一个叫做opener的工具来访问不同的网站,并且使用了一个“饼干罐”(cookie jar)。我能不能设置一个头部信息,这样每次访问网站时,这个头部信息都会被应用上呢?

2 个回答

18
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)
62

你可以直接把头信息加到通过 build_opener 返回的 OpenerDirector 对象上。下面是来自 urllib2 文档 的最后一个例子:

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)。

撰写回答