Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在开瓶器中使用Cookiejar_Python_Urllib2_Cookiejar_Cookielib - Fatal编程技术网

Python 在开瓶器中使用Cookiejar

Python 在开瓶器中使用Cookiejar,python,urllib2,cookiejar,cookielib,Python,Urllib2,Cookiejar,Cookielib,我目前有以下代码: 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 ) 现在我在我的代码中不想使用任何cookies(同时也不想使用新创建的cookies) 我可以做一个简单的tw_jar.clear(),还是需要

我目前有以下代码:

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 )
现在我在我的代码中不想使用任何cookies(同时也不想使用新创建的cookies)


我可以做一个简单的
tw_jar.clear()
,还是需要重新构建并安装opener以清除请求中使用的所有cookie?

这就是在我的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
实例,它将影响所有未来的请求。

如果您不需要任何cookie,我建议创建一个新的开启器。但是,如果出于某种原因希望保留旧的处理器,则从处理程序列表中删除cookie处理器应该可以:

o.handlers = [h for h in o.handlers
              if not isinstance(h, urllib2.HTTPCookieProcessor)]

您是否需要清除旧cookie,但仍继续处理新cookie,或者根本不使用任何cookie?