Python中cookielib库(python3中为http.cookiejar)为存储和管理cookie提供客户端支持。
该模块主要功能是提供可存储cookie的对象。使用此模块捕获cookie并在后续连接请求时重新发送,还可以用来处理包含cookie数据的文件。
这个模块主要提供了这几个对象,CookieJar,FileCookieJar,MozillaCookieJar,LWPCookieJar。
1. CookieJar
CookieJar对象存储在内存中。
1 >>> import urllib2 2 >>> import cookielib 3 >>> cookie=cookielib.CookieJar() 4 >>> handler=urllib2.HTTPCookieProcessor(cookie) 5 >>> opener=urllib2.build_opener(handler) 6 >>> opener.open('http://www.google.com.hk')
查看捕捉到的访问google的cookie:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 >>> print cookie 2 <cookielib.CookieJar[<Cookie NID=67=B6YQoEIEjcqDj-adada_WmNYl_JvADsDEDchFTMtAgERTgRjK452ko6gr9G0Q5p9h1vlmHpCR56XCrWwg1pv6iqhZnaVlnwoeM-Ln7kIUWi92l-X2fvUqgwDnN3qowDW for .google.com.hk/>, <Cookie PREF=ID=7ae0fa51234ce2b1:FF=0:NW=1:TM=1391219446:LM=1391219446:S=cFiZ5X8ts9NY3cmk for .google.com.hk/>]>
看来是Cookie实例的集合,Cookie实例有name,value,path,expires等属性:
1 >>> for ck in cookie: 2 ... print ck.name,':',ck.value 3 ... 4 NID : 67=B6YQoEIEjcqDj-adada_WmNYl_JvADsDEDchFTMtAgERTgRjK452ko6gr9G0Q5p9h1vlmHpCR56XCrWwg1pv6iqhZnaVlnwoeM-Ln7kIUWi92l-X2fvUqgwDnN3qowDW 5 PREF : ID=7ae0fa51234ce2b1:FF=0:NW=1:TM=1391219446:LM=1391219446:S=cFiZ5X8ts9NY3cmk
2. 将cookie捕捉到文件
FileCookieJar(filename)
创建FileCookieJar实例,检索cookie信息并将信息存储到文件中,filename是文件名。
MozillaCookieJar(filename)
创建与Mozilla cookies.txt文件兼容的FileCookieJar实例。
LWPCookieJar(filename)
创建与libwww-perl Set-Cookie3文件兼容的FileCookieJar实例。
1 import urllib2 2 import cookielib 3 def HandleCookie(): 4 5 #handle cookie whit file 6 filename='FileCookieJar.txt' 7 url='http://www.google.com.hk' 8 FileCookieJar=cookielib.LWPCookieJar(filename) 9 FileCookeJar.save() 10 opener =urllib2.build_opener(urllib2.HTTPCookieProcessor(FileCookieJar)) 11 opener.open(url) 12 FileCookieJar.save() 13 print open(filename).read() 14 15 #read cookie from file 16 readfilename = "readFileCookieJar.txt" 17 MozillaCookieJarFile =cookielib.MozillaCookieJar() 18 print MozillaCookieJarFile 19 MozillaCookieJarFile.load(readfilename) 20 print MozillaCookieJarFile 21 if __name__=="__main__": 22 HandleCookie()