python 网络爬虫——cookie的使用

什么是cookie?

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

这里写图片描述

                   客户端访问服务器的过程              

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

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

Cookielib模块

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

获取cookie

import urllib2,urllib
#用来管理cookie的包
import cookielib
url = '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 cookielib
url = '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)    #相当于自己新创建了一个url

filename = 'cookie.txt'  #cookie

cookie2 = 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 urllib2
import cookielib

url = '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的利用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值