python 打开网页获取cookies_python 网页cookie的使用

网页cookie的使用

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

# opener的概念

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

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

# Cookielib

cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。Cookielib模块非常强大,我们可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能。该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

关系:CookieJar —- 派生—->FileCookieJar —- 派生 —–> MozillaCookieJar和LWPCookieJar

1. 获取Cookie保存到变量

利用CookieJar对象实现获取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)

2. 保存Cookie到txt文件

将cookie保存到了cookie这个变量中,使用FileCookieJar的子类MozillaCookieJar来实现Cookie的保存

import urllib2

import cookielib

filename = "cookie.txt" # 设置保存cookie的文件

cookie = cookielib.MozillaCookieJar(filename) # 声明一个MozillaCookieJar对象实例来保存cookie

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

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

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

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

注:ignore_discard的意思是即使cookies将被丢弃也将它保存下来,ignore_expires的意思是如果在该文件中cookies已经存在,则覆盖原文件写入

3. 从文件中获取Cookie并访问

import urllib2

import cookielib

cookie = cookielib.MozillaCookieJar()

cookie.load("cookie.txt",ignore_discard=True,ignore_expires=True)

request = urllib2.Request("http://www.baidu.com")

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

response = opener.open(request)

print (response.read())

4. 利用cookie模拟网站登录163邮箱

利用cookie实现模拟登录,并将cookie信息保存到文本文件中。

# eg_v1

import urllib

import urllib2

import cookielib

filename = "163mail.txt"

cookie = cookielib.MozillaCookieJar(filename)

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

postdata = urllib.urlencode({"email":"15800220134","password":"abc123456"})

loginURL = "http://mail.163.com/"

result = opener.open(loginURL,postdata)

cookie.save(ignore_discard=True,ignore_expires=True)

gradeURL = "http://mail.163.com/js6/main.jsp?sid=VDTWzvRRwIKUKIMaBmRRejDfKwRnmmNM&df=mail163_letter#module=welcome.WelcomeModule%7C%7B%7D"

result1 = opener.open(gradeURL)

print (result1.read())

# eg_v2

import urllib

import urllib2

def post(url,data):

request = urllib2.Request(url)

data = urllib.urlencode(data)

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())

response = opener.open(request,data)

return response.read()

def main():

posturl = "http://mail.163.com"

data = {"email":"15800220134","password":"abc123456"}

print (post(posturl,data))

if __name__ == "__main__":

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值