Python3网络爬虫(3):Python3使用Cookie-模拟登陆

来源:互联网 发布:网络兼职配音 编辑:程序博客网 时间:2024/05/16 14:19

Python版本:Python3.x

IDE:Mac ,Pycharm

一、为什么要使用Cookie

Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容,登陆前与登陆后是不同的,或者不允许的。 使用Cookie和使用代理IP一样,也需要创建一个自己的opener。在HTTP包中,提供了cookiejar模块,用于提供对Cookie的支持。http.cookiejar功能强大,我们可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能。该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。它们的关系: CookieJar–派生–>FileCookieJar–派生–>MozillaCookieJar和LWPCookieJar工作原理:创建一个带有cookie的opener,在访问登录的URL时,将登录后的cookie保存下来,然后利用这个cookie来访问其他网址。查看登录之后才能看到的信息。

代码

# -*- coding: UTF-8 -*-import urllib.requestfrom http import cookiejarfrom http import cookiesfrom urllib import parse#通过cookieJar类构建一个cookieJar对象,用来保存cookie的设置、cookie=cookiejar.CookieJar()#通过一个HttpCookieProcessor()处理器类构建一个处理器对象,用来处理cookie#参数就是构建的cookieJar对象、cookie_handle=urllib.request.HTTPCookieProcessor(cookie)opener=urllib.request.build_opener(cookie_handle)#人人网登陆接口url='http://www.renren.com/PLogin.do'data1={"email":"304774164@qq.com","password":"dc***"}#通过urlencode()编码转换data=urllib.parse.urlencode(data1).encode('utf-8')request=urllib.request.Request(url,data=data)response=opener.open(request)print(response.read().decode('utf-8'))

这里写图片描述

通过返回的html信息,我们可以看出登录已经成功,并且获取到本人的用户信息。
本文参考了此篇博客http://blog.csdn.net/c406495762