爬虫:利用cookie获取人人网登录后网页信息
思路:
1、首先创建一个自动获取登录cookie的实例,创建请求管理器opener
2、分析网页源码,获取登录的form信息,并写入data,访问登录界面url,获取cookie信息
3、分析登录后页面url,利用得到的cookie信息获取网页
一、创建cookie实例及请求管理器opener
from urllib import request, parse
from 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, parse
from 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()