Python爬虫—1入门_3_cookie的使用

cookie,是值某些网站为了辨别用户身份、进行session追踪而存储在用户本地终端上的数据
1、opener
     为了满足使用cookie的需求,这里就必须使用opener;
     之前使用的urlopen就是一个特殊的opener,这里使用urlopen是无法运用cookie的;
     因此,需要使用build_opener( )函数来创建一个新的opener。
2、cookielib模块
     cookielib模块的主要作用就是提供存储cookie的对象,以便于与urlib2模块配合使用,
来访问internet资源。
2.1 获取cookie并保存到变量
     例程如下:
import urllib2
import cookielib
cookie = cookielib.CookieJar()
handler = urllib2.HTTPCookieProcessor(cookie)
opener = urllib2.build_opener(handler)
response = opener.open( "http://www.baidu.com")
for item  in cookie:
    print  "Name = " + item.name
    print  "Value = " + item.value
     程序输出:
Name = BAIDUID
Value = 6C7C4DF6D5952898E0BE9A24CA5710DC:FG=1
Name = BIDUPSID
Value = 6C7C4DF6D5952898E0BE9A24CA5710DC
Name = H_PS_PSSID
Value = 19187_1450_13290_17944_18205_18134_17001_15238_12293_16915
Name = PSTM
Value = 1459151870
Name = BDSVRTM
Value = 0
Name = BD_HOME
Value = 0
2.2 保存 cookie 到文件
     需要使用FileCookieJar,这里使用它的子类MozillaCookieJar来实现cookie的保存
     例程:
import cookielib
import urllib2
#设置保存cookie的文件:cookie.txt
filename =  "cookie.txt"
#声明一个MozillaCookieJar对象实例用来保存cookie,之后写入文件
cookie = cookielib.MozillaCookieJar(filename)
#利用urllib2库中的HTTPCookieProcessor对象来创建cookie句柄
handler = urllib2.HTTPCookieProcessor(cookie)
#通过handler句柄来构建opener
opener = urllib2.build_opener(handler)
#创建请求,并获取服务器的相应
response = opener.open( "http://www.baidu.com")
#保存cookie到文件
cookie.save( ignore_discard Trueignore_expires True)
2.3 从文件中获取cookie并访问
     利用上面获取的cookie文件来访问网站
     例程:
import urllib2
import cookielib
cookie = cookielib.MozillaCookieJar()
cookie.load( "cookie.txt"ignore_discard= Trueignore_expires= True)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open( "http://www.baidu.com")
print response.read( )
3 总结
     默认的urlopen函数(一个特殊的opener),仅能处理不带任何信息的网页请求:
          1)使用request = urllib2.Request(url[,data[, headers]]),创建request请求对象
          2)使用response = urllib2.urlopen(request),即使用1)中创建的request对象来获取请求的页面
     上述方式,不支持验证cookie以及其他HTTP高级功能。
     为了能够支持验证cookie以及其他的HTTP高级功能,这里需要使用build_opener来自定义opener;
     对于带cookie验证的opener创建过程如下:
          1)cookie = cookielib.CookieJar( )创建一个空的cookie对象
          2)handler = urllib2.HTTPCookieProcessor(cookie)使用cookie对象创建一个handler句柄
          3)opener = urllib2.build_opener(handler)使用handler句柄创建一个opener;
          4)response = opener.open(url)使用自定义的opener来请求网页并获取网页信息
     注意:网站返回的cookie信息就会储存到cookie对象中;
          我们可以保存这些cookie信息到文件,可以在下次访问时使用这些cookie信息。
          例如:cookie对象创建之后,可以使用cookie.load()从文件中读取cookie信息;
          这样就可以使用以前保存的cookie信息,来访问网页了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值