思路:
1、首先创建一个自动获取登录cookie的实例,创建请求管理器opener
2、分析网页源码,获取登录的form信息,并写入data,访问登录界面url,获取cookie信息
3、分析登录后页面url,利用得到的cookie信息获取网页
一、创建cookie实例及请求管理器opener from urllib import request, parsefrom http import cookiejar # 创建一个cookie实例cookie = cookiejar.CookieJar()# 创建cookie的管理器cookie_handler = request.HTTPCookieProcessor(cookie)# 创建http的管理器http_handler = request.HTTPHandler()# 创建https的管理器https_handler = request.HTTPSHandler()# # 创建请求管理器opener = request.build_opener(http_handler, https_handler, cookie_handler) 二、分析源码,模拟登陆获取cookie打开网页源码,利用查找功能,找到form所在位置,可以看到我们所需要的键值和要上传的信息的url
def login(): url = 'http://www.renren.com/PLogin.do' ''' 登录人人网 :return: ''' data = { 'email': 'xxxxxxxx', # 个人邮箱或手机号 'password': 'xxxxxx' # 个人密码 } # 对数据进行编码 data = parse.urlencode(data).encode() req = request.Request(url, data=data) rsp = opener.open(req) 三、利用cookie获取登录后的网页信息def getHome(): url = 'http://www.renren.com/xxxxxx/profile' # 登录后个人的主页网址 rsp = opener.open(url) html = rsp.read().decode('utf-8') print(html)
运行代码,将输出结果放入rsp.html文件里,然后用浏览器打开,就可以看到,人人网的个人主页一闪而过,网页会阻止重定向。
if __name__ == '__main__': login() getHome() 完整代码: from urllib import request, parsefrom http import cookiejar# 创建一个cookie实例cookie = cookiejar.CookieJar()# 创建cookie的管理器cookie_handler = request.HTTPCookieProcessor(cookie)# 创建http的管理器http_handler = request.HTTPHandler()# 创建https的管理器https_handler = request.HTTPSHandler()# # 创建请求管理器opener = request.build_opener(http_handler, https_handler, cookie_handler)def login(): url = 'http://www.renren.com/PLogin.do' ''' 登录人人网 :return: ''' data = { 'email': 'xxxxxxxx', # 个人邮箱或手机号 'password': 'xxxxxx' # 个人密码 } # 对数据进行编码 data = parse.urlencode(data).encode() req = request.Request(url, data=data) rsp = opener.open(req)def getHome(): url = 'http://www.renren.com/xxxxxx/profile' # 登录后个人的主页网址 rsp = opener.open(url) html = rsp.read().decode('utf-8') print(html)if __name__ == '__main__': login() getHome()