CookieJar内存(变量)使用cookie
下面的这个程序完成的是从响应中将cookie信息提取出来
import urllib2
import cookielib
# 创建一个对象存储cookie
cookie = cookielib.CookieJar()
# 自动提取
header = urllib2.HTTPCookieProcessor(cookie)
# 处理cookie
opener = urllib2.build_opener(header)
response = opener.open("http://www.renren.com/")
cookies = ""
for data in cookie:
cookies = cookies + data.name + "=" + data.value + "\r\n"
print(cookies)
cookie信息保存文件
下面的这个程序将cookie信息保存起来
import urllib2
import cookielib
filepath = "../cookie/cookie.txt"
cookie = cookielib.LWPCookieJar(filepath) # 设定路径
header = urllib2.HTTPCookieProcessor(cookie) # 设定cookie,与网站有关
opener = urllib2.build_opener(header)
response = opener.open("http://www.renren.com/")
cookie.save(ignore_expires=True,ignore_discard=True)
文件cookie信息加载出来
import urllib2
import cookielib
filepath = "../cookie/cookie.txt"
cookie = cookielib.LWPCookieJar()
cookie.load(filepath,ignore_expires=True,ignore_discard=True)
header = urllib2.HTTPCookieProcessor(cookie)
opener = urllib2.build_opener(header)
response = opener.open("http://www.renren.com/")
print(response.read())
模拟登录记录cookie,然后在其他需要登录的页面使用(重点)
- 步骤记忆如下:
- 我们先找一个东西cookielib.CookieJar(),将我们获取到的cookie记录下来,要想记录,这个东西必须在链接中使用
- 请求和响应的链接中才有cookie信息,所以将东西放入到urllib2.HTTPCookieProcessor(cookie)中,然后创建一个打开器(将cookie链接处理器放在里面),目的完成请求和响应,实际上就是post请求,只不过是用opener的形式完成的,在这个过程中,那个东西记录了cookie信息
- 下一次再用这个打开器访问页面的时候,其实就携带这那个cookie信息
import urllib2
import urllib
import cookielib
# 创建一个对象存储cookie
cookie = cookielib.CookieJar()
# 创建一个链接对象使用cookie
cookie_handler = urllib2.HTTPCookieProcessor(cookie)
# 打开器,使用cookie
opener = urllib2.build_opener(cookie_handler)
# 增加一个浏览器模拟
opener.addheaders = [("User-Agent","Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0);")]
url = "http://www.renren.com/PLogin.do"
data = {"email":"xxxx","password":"xxxx"}
data = urllib.urlencode(data)
request = urllib2.Request(url,data) # post请求登录,抓取cookie
response = opener.open(request)
response_index = opener.open("http://www.renren.com/9148244/profile")
print(response_index.read())