Mri*_*lla 4 python urllib2 cookielib
我在使用Python 2.6中cookielib的urllib2模块时使用该模块处理HTTP cookie 的方式类似于此片段:
import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
Run Code Online (Sandbox Code Playgroud)
我想将cookie存储在数据库中.我不知道什么更好 - 序列化CookieJar对象并存储它或从中提取cookie CookieJar并存储它.我不知道哪一个更好或如何实现其中任何一个.我也应该能够重新创建CookieJar对象.
有人可以帮我解决上述问题吗?
提前致谢.
cookielib.Cookie,引用其文档字符串(在其来源中),
故意是一个非常简单的课程.它只是拥有属性.
so pickle(或其他序列化方法)适用于保存和恢复每个Cookie实例.
至于CookieJar,set_cookie设置/添加一个cookie实例,__iter__(使用后者,只for在jar实例上执行循环)将一个接一个地返回它所拥有的所有cookie实例.
您可以用来查看如何在数据库上创建"cookie jar"的子类是BSDDBCookieJar(部分mechanize,但我只是专门指向jar源代码文件) - 它不会将所有cookie加载到内存中,但是而是将它们保存在一个self._dbbsddb实例中(主要是在磁盘上,dict-lookalike哈希表限制为只有字符串作为键和值)并使用pickle进行序列化.
如果你可以在操作期间将每个cookie保存在内存中,那么简单地pickle使用jar就是最简单的(当然,将blob放在数据库中并在重新启动时将其从那里取回) - s = cPickle.dumps(myJar, -1)给你一个大字节整个jar的字符串(以及它的策略,当然,不仅仅是cookie),并theJar = cPickle.loads(s)在s从数据库重新加载为blob后重建它.