Ven*_*tta 4 python cookies urllib2 httprequest 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() to get the stuff I need.
Run Code Online (Sandbox Code Playgroud)
现在,我如何保留cookie并将过期日期设置为永久,所以下次我不必再次使用用户名和密码登录.我可以直接用urllib2.urlopen()吗?
"下一次"是指程序结束后,当我启动一个新程序时,我可以从磁盘重新加载cookie并使用它
非常感谢
我强烈建议使用Requests HTTP库.它将为您处理所有这些.
http://docs.python-requests.org/en/latest/
import requests
sess = requests.session()
sess.post("http://somesite.com/someform.php", data={"username": "me", "password": "pass"})
#Everything after that POST will retain the login session
print sess.get("http://somesite.com/otherpage.php").text
Run Code Online (Sandbox Code Playgroud)
编辑:要将会话保存到磁盘,有很多方法.您可以执行以下操作:
from requests.utils import cookiejar_from_dict as jar
cookies = jar(sess.cookies)
Run Code Online (Sandbox Code Playgroud)
然后阅读以下文档.您可以将其转换为FileCookieJar并将cookie保存到文本文件,然后在程序开始时加载它们.
http://docs.python.org/2/library/cookielib.html#cookiejar-and-filecookiejar-objects
或者,您可以挑选dict并将该数据保存到文件中,然后加载它pickle.load(file).
http://docs.python.org/2/library/pickle.html
编辑2:要处理到期,您可以按如下方式迭代CookieJar.cj假设是以某种方式获得的CookieJar.
for cookie in cj:
if cookie.is_expired():
#re-attain session
Run Code Online (Sandbox Code Playgroud)
要检查是否有任何cookie过期,可能会更方便if any(c.is_expired() for c in cj).
| 归档时间: |
|
| 查看次数: |
3109 次 |
| 最近记录: |