0

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

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),将所有标题、cookie 等添加到urllib2当我调用urlopen(). 想把它移到某个类,但不知道这段代码应该返回什么。另外,如果我将它移到__init__方法中,它将不起作用,因为init不会返回任何内容。

4

1 回答 1

1

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

有了这个,您将opener用于打开请求对象并返回响应

req = urllib2.Request('http://www.yoururl.com')
res = opener.open(req)
于 2012-10-13T16:04:32.037 回答