最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】Python中,获得了访问网页所返回的cookie后,如果获得每个cookie的域值(Field Value)

Python crifan 2514浏览 0评论

【问题】

已经得到了访问网页所返回的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”,其中看到有关于:

Morsel.valueMorsel.keyMorsel.coded_value

的介绍,然后就去代码中试了:

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的每个域,如:

Cookie.version, Cookie.name,Cookie.value

此时,才可以根据这个介绍,去写对应的代码,以获得所有的域值。

 

【总结】

如果对于系统帮助文档,没有利用好,没有找到真正的所需要的内容,也是会不小心误用错误代码的。所以代码万一错了,应该记得,有可能是没找到对应的参考资料所导致的。

转载请注明:在路上 » 【已解决】Python中,获得了访问网页所返回的cookie后,如果获得每个cookie的域值(Field Value)

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

    85 queries in 0.235 seconds, using 22.14MB memory