python 网络爬虫——cookie的使用

来源:互联网 发布:黑色沙漠游侠捏脸数据 编辑:程序博客网 时间:2024/06/18 17:36

什么是cookie?

  • Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)

这里写图片描述

                   客户端访问服务器的过程              

为什么要使用cookie模拟登陆?

  • 有些网站需要登陆后才能访问摸个页面,在登陆之前,我们想访问某个页面内容是不允许的,那么我们可以利用urllib2库保存我们登陆的cookie,然后在利用这个cookie在抓取页面上的信息。

Cookielib模块

  • cookielib模块的主要作用是提供可存储cookie的对象,以便与urllib2模块配合使用来访问Internet资源。我们可以利用这个模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登陆功能。
父类              CookieJar派生             FileCookieJar 派生   MozillaCookieJar   LWPCookieJar

获取cookie

import urllib2,urllib#用来管理cookie的包import cookieliburl = 'http://www.baidu.com'cookie = cookielib.CookieJar()   #1.创建cookie对象cookie_handler = urllib2.HTTPCookieProcessor(cookie)    #2.创建cookie管理器opener = urllib2.build_opener(cookie_handler)     #3.创建一个新的opener对象response = opener.open(url)          #4.使用opener对象发起请求接收响应for i in cookie:      #查看cookie    print i`###将cookie保存到文件中去查看输出:<Cookie BAIDUID=41667EBB76B45C1525CE362140D100C8:FG=1 for .baidu.com/><Cookie BIDUPSID=41667EBB76B45C1525CE362140D100C8 for .baidu.com/><Cookie H_PS_PSSID=1437_19036_21118_18560 for .baidu.com/><Cookie PSTM=1502460120 for .baidu.com/><Cookie BDSVRTM=0 for www.baidu.com/><Cookie BD_HOME=0 for www.baidu.com/>

将cookie保存到文件

import urllib2,urllib#用来管理cookie的包import cookieliburl = 'http://kaoshi.com:8888/edustu/login/login.spr'  #网址已更改#参数gold = {    'j_username':'1521231275',   #这里我随便写的,可以用火狐firebug查看请求参数    'j_password':'123456',}#编码date = urllib.urlencode(gold)headers = {    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) '             'Gecko/20100101 Firefox/54.0',}#创建request请求对象request = urllib2.Request(url,data=date,headers = headers)    #相当于自己新创建了一个urlfilename = 'cookie.txt'  #cookiecookie2 = cookielib.MozillaCookieJar(filename = filename)    #1.创建cookie对象cookie_handler= urllib2.HTTPCookieProcessor(cookie2)      #2.创建cookie管理器opener = urllib2.build_opener(cookie_handler)      #3.创建一个新的opener对象response = opener.open(request)       #4.使用opener对象发起请求接收响应cookie2.save(ignore_discard= True,ignore_expires=True)

查看文件:
这里写图片描述

save()方法

def save(self, filename=None, ignore_discard=False, ignore_expires=False)

官方解释如下:
ignore_discard: save even cookies set to be discarded.

ignore_expires: save even cookies that have expiredThe file is overwritten if it already exists

ignore_discard的意思是及时cookie将被求其也保存下来
ignore_expires的意思是如果在改文件中cookie已经存在,则覆盖原文件写入

利用cookie文件模拟用户登录

import urllib2import cookieliburl = 'http://kaoshi.com:8888/edustu/me/edu/meda.spr' #已更改headler = {    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) '             'Gecko/20100101 Firefox/54.0',}#创建request请求对象request = urllib2.Request(url,headers = headler)#创建cookie对象cookie = cookielib.MozillaCookieJar()#加载cookie文件cookie.load(filename='cookie.txt',ignore_discard=True,ignore_expires=True)#创建cookie管理器cookie_handler = urllib2.HTTPCookieProcessor(cookie)#创建open对象opener = urllib2.build_opener(cookie_handler)#发送请求resp = opener.open(request)print resp.read()

可以看到那到的是登录后的页面源代码
这里写图片描述

总结:

  • 其实现在对于cookie的操作,我也只是限于这些简单的cookie利用,如何更加深入的利用cookie现在还是做不到,等以后更加深入的学习再2继续更新cookie的利用。
原创粉丝点击