目前我有以下代码:
tw_jar = cookielib.CookieJar()
tw_jar.set_cookie(c1)
tw_jar.set_cookie(c2)
o = urllib2.build_opener( urllib2.HTTPCookieProcessor(tw_jar) )
urllib2.install_opener( o )
现在我稍后在我的代码中我不想使用任何cookie(同时也创建了新的cookie)。
我可以做一个简单的tw_jar.clear()
,还是需要再次构建和安装opener来摆脱请求中使用的所有cookie?
答案 0 :(得分:2)
这是我在Python安装中定义HTTPCookieProcessor
的方式:
class HTTPCookieProcessor(BaseHandler):
def __init__(self, cookiejar=None):
import cookielib
if cookiejar is None:
cookiejar = cookielib.CookieJar()
self.cookiejar = cookiejar
def http_request(self, request):
self.cookiejar.add_cookie_header(request)
return request
def http_response(self, request, response):
self.cookiejar.extract_cookies(response, request)
return response
https_request = http_request
https_response = http_response
由于只保存了一个引用,您只需操作原始的tw_jar
实例,它就会影响以后的所有请求。
答案 1 :(得分:0)
如果你不想要任何cookie,我建议你创建一个新的开场白。但是,如果由于某种原因你想保留旧的,那么从处理程序列表中删除cookie处理器应该可以工作:
o.handlers = [h for h in o.handlers
if not isinstance(h, urllib2.HTTPCookieProcessor)]