【问题】
已经得到了访问网页所返回的cookie了:
(注:已经import cookielib了)
loginUrl = "http://hi.baidu.com/motionhouse"; cj = cookielib.CookieJar(); opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)); urllib2.install_opener(opener); resp = urllib2.urlopen(loginUrl); for index, cookie in enumerate(cj): print '[',index, ']',cookie;
接着想要得到每个cookie的域值,即每个cookie的domain,path等值。
【解决过程】
1.在Python 2.7自带的帮助文档中搜cookie,找到“20.22. Cookie — HTTP state management”中的“20.22.2. Morsel Objects”,其中看到有关于:
的介绍,然后就去代码中试了:
for index, cookie in enumerate(cj): print '[',index, ']'; print cookie.key; print cookie.value; print cookie.expires; print cookie.path; print cookie.comment; print cookie.domain; print cookie.max-age; print cookie.secure; print cookie.version; print cookie.httponly; print '------------';
结果代码运行死掉了,显示对应的KeyError,意思是CookieJar的单个cookie中,没有.key这个变量。
所以悲剧了,然后就以为,此处的直接引用对应的cookie的域值,包括path,domain等,都是不行的呢。
2.后来自己无意间,把cookie.key换为cookie.name,结果代码就可以正常运行了,即可以打印出来cookie的domain,path等所有的域值了。
3、对应的,后来又在“20.21. cookielib — Cookie handling for HTTP clients”中的“20.21.5. Cookie Objects”,才找到真正所需要的,关于cookie的每个域值的介绍,包括了cookie的每个域,如:
此时,才可以根据这个介绍,去写对应的代码,以获得所有的域值。
【总结】
如果对于系统帮助文档,没有利用好,没有找到真正的所需要的内容,也是会不小心误用错误代码的。所以代码万一错了,应该记得,有可能是没找到对应的参考资料所导致的。
转载请注明:在路上 » 【已解决】Python中,获得了访问网页所返回的cookie后,如果获得每个cookie的域值(Field Value)