![实战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=1739556075-KXuqkMUXsS8zBnYuXvF5riMnfhoW3Md8-0-43c7e530c12a5bedd1de7c4a928f92b2)
代码中的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=1739556075-FmUtGwKDgmRI2KK4D0VUl7syzz4MaEbx-0-8c68d86bc09bf5e0daa9e311b33e0ac3)
读取和写入的方法很相似,主要区别在于:两者对MozillaCookieJar()对象的操作不同,导致实现功能也不同。运行结果如图5-2所示。
![](https://epubservercos.yuewen.com/78BE40/15056704604178806/epubprivate/OEBPS/Images/Figure-P55_1.jpg?sign=1739556075-dI9C3tO7ZS9SMMNf5wugAFD8kKaLVdLh-0-6f861d272559ca6fae2fa88783cd4570)
图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=1739556075-86bkfn3nok56UF5p3PIrmrsT902os6bX-0-c0316fe9ff0fea4931807acec71f9efb)