人人网登录请求使用账号密码发起login,并进行状态保持,请求其他页面;
import json
from urllibfz_all import post,get
from urllib import request,parse
from http import cookiejar
# 通过对象创建cookie
cookie_ob = cookiejar.CookieJar()
# 实例化对应cookie进行操作的handler
handler = request.HTTPCookieProcessor(cookie_ob)
# 获取opener请求对象绑定cookie对应的handler
opener = request.build_opener(handler)
# 人人网登录请求地址
url = 'http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2018721554779'
# 人人网登录请求体
# 请求体可以在登录界面登录一次从network中找到
form = {
'email': '18511111111',
'icode': '',
'origURL': 'http://www.renren.com/home',
'domain': 'renren.com',
'key_id': '1',
'captcha_type': 'web_login',
'password': '2a5485d42a063e7903f9206d17a849ae32ef89f75684c8f4f892f31565d2f5ac',
'rkey': '6b222c710335d0b745cd9aad621dd249',
'f': 'http%3A%2F%2Fguide.renren.com%2Ffillinfonew',
}
# 将from进行urlencode并转为bytes
form_byte = parse.urlencode(form).encode('utf-8')
# 通过opener发起请求获取返回response
response = opener.open(url,form_byte)
# 读取返回体
html_byte = response.read()
print(html_byte)
# 获取返回中的home地址 # 注:没有做登录成功判断,直接做登录成功处理的,不过账号密码验证失败也会有homeUrl的
home_url = json.loads(html_byte.decode('utf-8'))['homeUrl']
# 通过opener发起home页面的请求 # 通过opener发起的新地址请求,会将之前请求返回的cookie一起带过去
response = opener.open(home_url)
# 获取返回体内容
html_bytes = response.read()
print(html_bytes.decode('utf-8'))
代码中导入等urllibfz_all可以在另一份博客中有代码:
get,post请求封装