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:要处理过期问题,您可以如下迭代CookieJarcj
被假定为以某种方式获得的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