1 保存Cookie到变量
如果要管理HTTP Cookie,需要创建一个包含CookieJar对象的HTTPCookieProcessor处理程序,可以将不同类型的CookieJar对象传递给HTTPCookieProcessor,进而可以得到不同的Cookie处理。
下面代码显示了如何将获取到的Cookie变量保存下来,并打印出来,如下:
上述代码中,首先创建了一个CookieJar对象,用于管理和存储cookie内容,然后将其传递到HTTPCookieProcessor中;接着,创建一个opener,并将HTTPCookieProcessor对象传入到opener,这样在获取URL时,cookie信息就自动存储在CookieJar对象中;最后,将获取到的cookie值打印出来如下:
从打印结果来看,cookie内容信息就是键值对的组合。
2 保存cookie到文件
如果想将cookie信息保存到文件中,就要用到我们之前将的CookieJar的子类,例如采用MozillaCookieJar,直接上代码:
代码中最大的不同是在创建CookieJar对象的时候指定一个保存cookie信息的文件,在调用MozillaCookieJar中的save方法时,要注意里面的两个参数含义,ignore_discard的意思是即使cookies将被丢弃也将它保存下来,ignore_expires的意思是如果在该文件中cookies已经存在,则覆盖原文件写入,在这里,我们将这两个全部设置为True。运行之后,cookies将被保存到cookie.txt文件中,我们查看一下内容:
3 从文件中读取cookie并访问
当cookie信息保存到本地文件中后,下次再次访问该网站时,我们就可以读取cookie文件信息并访问网站,上代码:
4 利用cookie模拟登录
下面将利用前面讲解的cookie方法实现模拟登录某教育系统,进而查询成绩为例,直接上代码:
注:以上代码仅供说明技术原理所用。
代码原理是创建带有cookie变量的opener,然后构建用户登录信息postData,并将其传入到opener中的open方法中;此时的cookie登录信息便存储在cookie变量中,并将其写入到外部文件中;最后利用已有登录信息的opener去访问成绩页面,便能够顺利拿到包含成绩的页面信息啦。