Python如何保存HTTP cookies

Python如何保存HTTP cookies,python,cookies,httprequest,urllib2,cookielib,Python,Cookies,Httprequest,Urllib2,Cookielib,我用这件衣服 cj = cookielib.LWPCookieJar() cookie_support = urllib2.HTTPCookieProcessor(cj) opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) urllib2.install_opener(opener) // ..... log in with username and password. // urllib2.urlopen()

我用这件衣服

cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)

// ..... log in with username and password. 
// urllib2.urlopen() to get the stuff I need. 
现在,我如何保存cookie并将到期日期设置为永久,以便下次我不必再次使用用户名和密码登录。我可以直接使用
urllib2.urlopen()

“下次”是指在程序结束后,当我启动一个新程序时,我可以从磁盘重新加载cookie并使用它


非常感谢

我强烈建议使用请求HTTP库。它会为你处理所有这些

编辑:要将会话保存到磁盘,有很多方法。您可以执行以下操作:

from requests.utils import cookiejar_from_dict as jar
cookies = jar(sess.cookies)
然后阅读以下文档。您可以将其转换为FileCookieJar,并将cookie保存为文本文件,然后在程序开始时加载它们

或者,您可以对dict进行pickle并将该数据保存到文件中,然后使用
pickle.load(file)
加载它

编辑2:要处理过期问题,您可以如下迭代CookieJar
cj
被假定为以某种方式获得的CookieJar

for cookie in cj:
    if cookie.is_expired():
        #re-attain session

要检查是否有任何cookie过期,如果有(c.is_expired()表示cj中的c)可能更方便,请执行

嗨,Anorov,可能我不清楚我的问题。我在问,程序结束后,当我启动一个新程序时,我可以从磁盘重新加载cookie并使用它,而无需重新登录。请求非常棒。非常好的建议:)谢谢阿诺洛夫。最后一个问题,我会接受你的回答。如何设置CookieJar对象的过期时间?我阅读了您指出的链接,但是我很难理解CookieJar对象和Cookie对象之间的区别CookieJar充当Cookie对象的包装器集合,并添加了一些方法。Cookie是一个单独的类,可以在这里找到:为什么您要设置自己的过期时间?如果要查看服务器发送的原始Cookie是否已过期,可以对其使用
is\u expired()
。您只需要在检查从文件加载的cookie时执行此操作。
for cookie in cj:
    if cookie.is_expired():
        #re-attain session