需要建议热门将urllib2.install_opener()移动到另一个类

时间:2012-10-13 16:01:40

标签: python urllib2

我的程序顶部有一个代码,如下所示:

cj=cookielib.CookieJar()
#Process Hadlers
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
#install opener, now all the calls to urllib2.urlopen use this opener
urllib2.install_opener(opener)
opener.addheaders=[
                    ('User-Agent', 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9850; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.115 Mobile Safari/534.11+'),
                   # ('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
                    ('Accept-Language', 'en-gb,en;q=0.5'),
                    ('Accept-Encoding', 'gzip,deflate'),
                    ('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'),
                    ('Keep-Alive', '115'),
                    ('Connection', 'keep-alive'),
                    ('Cache-Control', 'max-age=0'),
                    ('Referer', 'http://yahoo.com'),
                ]

所以现在我想把这个代码移到另一个类,因为我不想在我的程序中复制和粘贴代码。 据我所知urllib2.install_opener(opener),当我致电urllib2时,将所有标题,Cookie等添加到urlopen()。 想把它移到某个类但不知道这个代码应该返回什么。另外,如果我将其移至__init__方法,它将无效,因为 init 不会返回任何内容。

1 个答案:

答案 0 :(得分:1)

您可以在名为urlhandler.py的模块中使用此代码,并使用您在上面定义的opener。应该有效的from urlhandler import opener。该代码使用所有适当的处理程序初始化opener,使urllib2接受请求。

有了这个,您将使用opener打开请求对象并获得回复

req = urllib2.Request('http://www.yoururl.com')
res = opener.open(req)