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
人人网 cookie 保存
最新推荐文章于 2021-01-31 22:08:01 发布