cookiejar包_爬虫之FileCookieJar

简介

虽然CookieJar模块能够做到给请求设置cookie,但是它的cookie是保存在内存里的,每次用都需要重新设置,

这就衍生了一个它的子类---FileCookieJar,它可以将cookie保存在文件中,然后直接使用就可了

示例

cookie的保存

from urllib import request,parse

from http import cookiejar

# 创建filecookiejar实例对象

# 它需要一个参数,既cookie保存的位置

filename = 'cookie.txt'

cookie = cookiejar.FileCookieJar(filename)

# 根据创建的cookie生成cookie的管理器

cookie_handle = request.HTTPCookieProcessor(cookie)

# 创建http请求管理器

http_handle = request.HTTPHandler()

# 创建https管理器

https_handle = request.HTTPSHandler()

# 创建求求管理器,将上面3个管理器作为参数属性

# 有了opener,就可以替代urlopen来获取请求了

opener = request.build_opener(cookie_handle,http_handle,https_handle)

def login():

'''

负责初次登录

需要传递用户名和密码,来获取登录的cookie凭证

'''

# 登录url,需要从登录form的action属性中获取

url = 'http://www.renren.com/PLogin.do'

# 登录所需要的数据,数据为字典形式,

# 此键值需要从form扁担中对应的input的name属性中获取

data = {

'email':'136808069@qq.com',

'password':'123456'

}

# 将数据解析成urlencode格式

data = parse.urlencode(data)

req = request.Request(url,data=data)

# 正常是用request.urlopen(),这里用opener.open()发起请求

response = opener.open(req)

# 保存cookie文件

cookie.save()

if __name__ == '__main__':

'''

执行login函数

'''

login()

cookie的调用

from urllib import request,parse

from http import cookiejar

# 创建cookiejar实例对象

cookie = cookiejar.FileCookieJar()

# 读取已经保存的cookie文件

# 读取之后,就无需登录,直接访问主页即可

cookie.load('cookie.txt')

# 根据创建的cookie生成cookie的管理器

cookie_handle = request.HTTPCookieProcessor(cookie)

# 创建http请求管理器

http_handle = request.HTTPHandler()

# 创建https管理器

https_handle = request.HTTPSHandler()

# 创建求求管理器,将上面3个管理器作为参数属性

# 有了opener,就可以替代urlopen来获取请求了

opener = request.build_opener(cookie_handle,http_handle,https_handle)

def getHomePage():

'''

获取登录后的页面

'''

# 此url是登录后的链接地址

url = 'http://www.renren.com/965187997/profile'

# 如果已经执行了上面的login函数,

# 那么此时的opener已经是包含了cookie信息的一个opener对象

res = opener.open(url)

html = res.read().decode()

with open('renren.html','w') as f:

f.write(html)

if __name__ == '__main__':

getHomePage()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值