Cookie

为辨认用户身份、进行session跟踪而存储在用户本地终端上的数据

Cookielib

主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。
使用Cookielib模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如模拟登录
该模块的对象有CookieJar、FileCookieJar、MozillaCoolieJar、LWPCookieJar

获取Cookie保存到变量

用CookieJar对象实现获取cookie的功能,存储到变量中

import urllib2
import cookielib
# 声明一个CookieJar对象实例来保存cookie
cookie = cookielib.CookieJar()
# 利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler = urllib2.HTTPCookieProcessor(cookie)
# 通过handler来构建opener
opener = urllib2.build_opener(handler)
# 此处的open方法同urllib2的urlopen方法
response = opener.open("http://www.baidu.com")
for item in cookie:
    print 'Key = ' + item.name
    print 'Value = ' + item.value

保存Cookie到文件

使用FileCookieJar的子类MozillaCookieJar来实现Cookie的保存

import cookielib
import urllib2

# 设置保存cookie的文件,同级目录下的cookie.txt
filename = "cookie.txt"
# 声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
cookie = cookielib.MozillaCookieJar(filename)
# 利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler = urllib2.HTTPCookieProcessor(cookie)
# 通过handler来构建opener
opener = urllib2.build_opener(handler)
# 创建一个请求,原理同urllib2的urlopen
response = opener.open("http://www.baidu.com")
# 保存cookie到文件
cookie.save(ignore_discard=True, ignore_expires=True)

ignore_discard:即使cookies将被丢弃也将它保存下来
ignore_expires:如果在该文件中cookies已经存在,则覆盖原文件写入

从文件中获取Cookie并访问

import cookielib
import urllib2
# 创建MozillaCookieJar实例对象
cookie = cookielib.MozillaCookieJar()
# 从文件中读取cookie内容到变量
cookie.load("cookie.txt", ignore_discard = True, ignore_expires = True)
# 创建请求的request
request = urllib2.Request("http://www.baidu.com")
# 利用urllib的build_opener方法创建一个opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(reg)
print response.read()

模拟登录

import urllib
import urllib2
import cookielib
filename = "cookie.txt"
# 声明一个MozillaCookieJar对象来保存cookie,之后写入文件
cookie = cookielib.mozillaCookieJar(filename)
opener = urllib2.build_opener(urlib2.HTTPCookieProcessor(cookie))
postdata = {
    "account": "[email protected]",
    "passord": "xxxxxxx"
}
loginurl = "https://coding.net/login"
# 模拟登录
result = opener.open(loginurl, postdata)
# 保存cookie
cookie.save(ignore_discard = True, ignore_expires = True)
# 利用cookie请求访问另一个网址
geturl = "https://coding.net/user"
# 请求个人中心
result = opener.open(geturl)
print result.read()

你可能感兴趣的:(Cookie)