人人网 cookie 保存

from day1.tuozhan_all import post,get   #导入post,get
import json
from urllib import request, parse

# 用来保存cookie
from http import cookiejar    #cookie类的包
# 通过对象来保存cookie
cookie_object = cookiejar.CookieJar()    #相当于把CookieJar的类获取到
# handler  对应着一个操作
handler = request.HTTPCookieProcessor(cookie_object)   #要把cookie传进去   相当于制造了一个request可以识别的handler
                # HTTPCookieProcessor 对应的是一个操作  将opener如果遇到有返回cookie的时候   就将cookie放到对象里的操作
# opener 遇到有cookie的response的时候,调用handler内部的一个函数,存储到cookie_object内
opener = request.build_opener(handler)




# def store(cookie):    srore内传一个cookie
#   cookie_object.append(cookie)      假设cookie_object是一个容器    它能够将外界传给它的cookie都设置到cookie_object里边
#
# def check_response(response):
#   if 'cookie' in response:        如果发现response 内部 有一个东西叫cookie
#       handler.store(response['cookie'])         就会去调用handler




#   第一步要有url
url = 'http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2018721653157'
#   构建url底下所对应的from
form = {
    'email':'15093700519',
    'icode':'',
    'origURL':'http://www.renren.com/home',
    'domain':'renren.com',
    'key_id':'1',
    'captcha_type':'web_login',
    'password':'8828e55c8a1904101eb7b26066cb1c334978af789468271aad25f2a3596d65c3',
    'rkey':'3b66491e0ea07e60e0bf5d57c50d356d',
    'f':'http%3A%2F%2Fwww.renren.com%2F967454016'
}
form_bytes = parse.urlencode(form).encode('utf-8')

# response = request.urlopen(url,form_bytes)        request做了一个封装    就变成了这一步
# opener = request.build_opener()      默认build_opener()  没有传任何handler   如果需要向opener里边传handler   就不能用已经封装好的
# opener.op()                          所以说就要在上边把handler传进去
response = opener.open(url,form_bytes)             #要用opener去把post替换掉
html_bytes = response.read()
#   调用post函数去发送页面
# html_bytes = post(url, form = form)
#   打印结果
#   print(html_bytes)     # b'{"code":true,"homeUrl":"http://www.renren.com/home"}'

# 通过json获取一个字典类型
res_dict = json.loads(html_bytes.decode('utf-8'))
# 获取字典类型后  获取地址  把网站获取下来
home_url = res_dict['homeUrl']

response = opener.open(home_url)      #替换掉get       因为opener已经有handler    因为cookie在handler里面   所以就能返回正常的结果
# 用get访问这个获取的页面     导入get
# html_bytes = get(home_url)

html_bytes = response.read()
print(html_bytes.decode('utf-8'))   #这时候没有cookie  得拿到cookie


#  每次访问网站的时候cookie都可能更新   每次更新都会替换掉以前的一个cookie
#  handler 里只能存放一个cookie  就是访问过的最新的一个cookie

猜你喜欢

转载自blog.csdn.net/qq_41996633/article/details/81675208