![实战Python网络爬虫](https://wfqqreader-1252317822.image.myqcloud.com/cover/862/26542862/b_26542862.jpg)
上QQ阅读APP看书,第一时间看更新
5.5 使用Cookies
Cookies主要用于获取用户登录信息,比如,通过提交数据实现用户登录之后,会生成带有登录状态的Cookies,这时可以将Cookies保存在本地文件中,下次程序运行的时候,可以直接读取Cookies文件来实现用户登录。特别对于一些复杂的登录,如验证码、手机短信验证登录这类网站,使用Cookies能简单解决重复登录的问题。
Urllib提供HTTPCookieProcessor()对Cookies操作,但Cookies的读写是由MozillaCookieJar()完成的。下面的例子实现Cookies写入文件,代码如下:
![](https://epubservercos.yuewen.com/78BE40/15056704604178806/epubprivate/OEBPS/Images/Figure-P54_1.jpg?sign=1739366641-G5YtUhDR74sG7DeKV5qTOwFeWmwCRh1y-0-7293dc634e12735a7f076ef3f11006d1)
代码中的cookiejar是自动处理HTTP Cookie的类,MozillaCookieJar()用于将Cookies内容写入文件。程序运行时先创建MozillaCookieJar()对象,然后将对象直接传入函数HTTPCookieProcessor(),生成opener对象;最后使用opener对象访问URL,访问过程所生成的Cookies就直接写入已创建的文本文档中。
接着再看如何读取Cookies,代码如下:
![](https://epubservercos.yuewen.com/78BE40/15056704604178806/epubprivate/OEBPS/Images/Figure-P54_2.jpg?sign=1739366641-A9YUD9XrkJuQ4SKhFnlY9C0RYLRQnKgC-0-f4e1883fcd0664709387b115f95cfffe)
读取和写入的方法很相似,主要区别在于:两者对MozillaCookieJar()对象的操作不同,导致实现功能也不同。运行结果如图5-2所示。
![](https://epubservercos.yuewen.com/78BE40/15056704604178806/epubprivate/OEBPS/Images/Figure-P55_1.jpg?sign=1739366641-9DYg1RuESwv1USx04ZEwTy9DMiOJaxAz-0-3e1d66838751cb14543102d7b565c852)
图5-2 验证Cookies
注意,为了方便测试,上述代码中使用的cookie.save()和cookie.load(filename)将Cookies内容显示在文本文档中。在实际开发中,为了提高安全性,可以在保存和读取Cookies时设置参数,使Cookies信息隐藏在文件中。方法如下:
![](https://epubservercos.yuewen.com/78BE40/15056704604178806/epubprivate/OEBPS/Images/Figure-P55_2.jpg?sign=1739366641-DplwHU1orRszEfaJGv8aHOW9PLtYF9x0-0-70fe6391aa21714a9c0cf7766c626dbe)