我的程序顶部有一个代码,如下所示:
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 不会返回任何内容。
答案 0 :(得分:1)
您可以在名为urlhandler.py
的模块中使用此代码,并使用您在上面定义的opener
。应该有效的from urlhandler import opener
。该代码使用所有适当的处理程序初始化opener,使urllib2接受请求。
有了这个,您将使用opener
打开请求对象并获得回复
req = urllib2.Request('http://www.yoururl.com')
res = opener.open(req)