2

現在、次のコードがあります。

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()ますか、それともリクエストで使用されているすべてのCookieを削除するために、オープナーを再度ビルドしてインストールする必要がありますか?

4

2 に答える 2

2

これはHTTPCookieProcessor私のPythonインストールでどのように定義されているかです:

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今後のすべてのリクエストに影響します。

于 2011-12-21T18:32:40.547 に答える
0

Cookieが必要ない場合は、新しいオープナーを作成することをお勧めします。ただし、何らかの理由で古いものを保持したい場合は、ハンドラーのリストからCookieプロセッサーを削除すると機能するはずです。

o.handlers = [h for h in o.handlers
              if not isinstance(h, urllib2.HTTPCookieProcessor)]
于 2011-12-21T18:33:52.047 に答える