美文网首页
Python cookies 操作

Python cookies 操作

作者: SateZheng | 来源:发表于2016-12-15 01:08 被阅读386次

摘抄自 http://cuiqingcai.com/968.html

1、Opener

当你获取一个URL你使用一个opener(一个urllib2.OpenerDirector的实例)。在前面,我们都是使用的默认的opener,也就是urlopen。它是一个特殊的opener,可以理解成opener的一个特殊实例,传入的参数仅仅是urldatatimeout

如果我们需要用到Cookie,只用这个opener是不能达到目的的,所以我们需要创建更一般的opener来实现对Cookie的设置。

2、Cookieslib

cookielib 模块的主要作用是提供可存储 cookies 的对象,以便于 urllib2 模块配合使用来访问 Internet 资源,我们可以利用本模块的 CookieJar 类的对象来捕获 cookie 并在后续连接请求时重新发送,可实现模拟登陆的功能。

该模块的主要对象有CookieJarFileCookieJarMozillaCookieJarLWPCookieJar

他们的关系:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJarLWPCookieJar

下边会从获取cookies开始,一步步实现模拟登陆

1)、获取cookies并保存到变量中

首先,我们先利用CookieJar对象实现获取cookie的功能,存储到变量中

import urllib2
import cookielib
# ----------------获取 cookies 保存到变量---------------
# 声明一个 CookiesJar 对象实例来保存 cookies
cookie = cookielib.CookieJar()

# 利用 urllib2库的HTTPCookieProcessor对象来创建 cookie 处理器
hander = urllib2.HTTPCookieProcessor(cookie)

# 通过 hander 来构建 opener
opener = urllib2.build_opener(hander)

# 添加 header
opener.addheaders = [("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36")]

# 此处 open 方法和 urllib2的 urlopen 方法一样,也可以传入 request
response1 = opener.open('http://www.baidu.com')

# response 变量保存网页信息,cookie 变量保存 cookies 信息
print cookie
for i in cookie:
    print "Name = " + i.name
    print "Value = " + i.value

2)、获取cookies保存到文件中

import urllib2
import cookielib
# ----------------获取 cookies 保存到文件--------------
#设置保存cookie的文件,同级目录下的cookie.txt
filename = 'cookie.txt'

# 声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
cookie = cookielib.MozillaCookieJar(filename)

# 利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
hander = urllib2.HTTPCookieProcessor(cookie)

# 通过handler来构建opener
opener = urllib2.build_opener(hander)

# 添加 header
opener.addheaders = [("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36")]

# 创建一个请求,原理同urllib2的urlopen
response2 = opener.open("http://www.baidu.com")

# 保存cookie到文件
cookie.save(ignore_discard=True,ignore_expires=True)

3)、从文件中获取cookies并访问网站

import urllib2
import cookielib
# -----------------从文件中获取并访问-------------------
# 创建 MozillaCookieJar 实例对象
cookie = cookielib.MozillaCookieJar()

# 从文件中读取 cookies 内容到变量
cookie.load('cookie.txt',ignore_discard=True,ignore_expires=True)

# 创建请求的 request
req = urllib2.Request("http://www.baidu.com")

# 利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
hander = urllib2.HTTPCookieProcessor(cookie)

# 通过handler来构建opener
opener = urllib2.build_opener(hander)

# 添加 header
opener.addheaders = [("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36")]

response3 = opener.open(req)
print response3.read()

相关文章

网友评论

      本文标题:Python cookies 操作

      本文链接:https://www.haomeiwen.com/subject/yauwmttx.html