查看文档,我的第一个猜测是我调用了 urllib.request.HTTPCookieProcessor().cookiejar.clear(),但是这不起作用。我的下一个猜测可能是我需要将它子类化并使用 opener 构建/安装它?我不知道该怎么做,如果需要的话我当然可以,但对于我觉得应该是这样一个简单的操作来说,这似乎有点矫枉过正。
最佳答案
默认情况下,urllib.request
将不存储任何cookie,因此没有要清除的内容。如果您将包含OpenerDirector
实例的HTTPCookieProcessor
构建为处理程序之一,则必须清除该实例的cookiejar
。 Example from the docs:
import http.cookiejar, urllib.request
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
如果您想清除
cj
中的cookie,只需调用cj.clear()
即可。您尝试的调用
urllib.request.HTTPCookieProcessor().cookiejar.clear()
将创建一个新的HTTPCookieProcessor
实例,该实例将具有一个空的cookiejar
,清除cookiejar
(无论如何都是空的)并再次删除整个内容,因为您不存储对任何已创建对象的引用-因此简而言之,它什么也不会做。