帮助中心

   

热门搜索: 免费续期  推广  永久会员

Python如何处理cookie信息?

网络爬虫现在已经非常多,所以很多网站为了防止自己的信息被盗用,他们会在网站设置对应的反爬虫机制,常见的有限制同个IP访问次数、验证码验证或者是账号密码登录等等。下面迅联加速跟大家说说在python中如何处理cookie。

Python如何处理cookie信息

http.cookiejar和HTTPCookieProcessor处理器

在Python3处理Cookie,一般是通过http.cookiejar模块和 urllib.request模块的HTTPCookieProcessor处理器类一起使用。

http.cookiejar模块:主要作用是提供用于存储cookie的对象

HTTPCookieProcessor处理器:主要作用是处理这些cookie对象,并构建handler对象。

http.cookiejar主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar

CookieJar:管理HTTP cookie值、存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。整个cookie都存储在内存中,对CookieJar实例进行垃圾回收后cookie也将丢失。

FileCookieJar (filename,delayload=None,policy=None):从CookieJar派生而来,用来创建FileCookieJar实例,检索cookie信息并将cookie存储到文件中。filename是存储cookie的文件名。delayload为True时支持延迟访问访问文件,即只有在需要时才读取文件或在文件中存储数据。

MozillaCookieJar (filename,delayload=None,policy=None):从FileCookieJar派生而来,创建与Mozilla浏览器 cookies.txt兼容的FileCookieJar实例。

LWPCookieJar (filename,delayload=None,policy=None):从FileCookieJar派生而来,创建与libwww-perl标准的 Set-Cookie3 文件格式兼容的FileCookieJar实例。

其实大多数情况下,我们只用CookieJar(),如果需要和本地文件交互,就用 MozillaCookjar() 或 LWPCookieJar()

一、获取Cookie,并保存到CookieJar()对象中

from urllib import request

import http.cookiejar as cookielib

# 构建一个CookieJar对象实例来保存cookie

cookiejar = cookielib.CookieJar()

# 使用HTTPCookieProcessor()来创建cookie处理器对象,参数为CookieJar()对象

handler=request.HTTPCookieProcessor(cookiejar)

# 通过 build_opener() 来构建opener

opener = request.build_opener(handler)

# 4. 以get方法访问页面,访问之后会自动保存cookie到cookiejar中

opener.open(“http://www.baidu.com”)

## 可以按标准格式将保存的Cookie打印出来

cookieStr = “”

for item in cookiejar:

cookieStr = cookieStr + item.name + “=” + item.value + “;”

## 舍去最后一位的分号

print(cookieStr[:-1])

二、访问网站获得cookie,并把获得的cookie保存在cookie文件中

from urllib import request

import http.cookiejar as cookielib

# 保存cookie的本地磁盘文件名

filename = ‘cookie.txt’

# 声明一个MozillaCookieJar(有save实现)对象实例来保存cookie,之后写入文件

cookiejar = cookielib.MozillaCookieJar(filename)

# 使用HTTPCookieProcessor()来创建cookie处理器对象,参数为CookieJar()对象

handler = request.HTTPCookieProcessor(cookiejar)

# 通过 build_opener() 来构建opener

opener = request.build_opener(handler)

# 创建一个请求

response = opener.open(“http://www.baidu.com”)

# 保存cookie到本地文件

cookiejar.save()

6.3、从文件中获取cookies,作为请求的一部分

from urllib import request

import http.cookiejar as cookielib

# 创建MozillaCookieJar(有load实现)实例对象

cookiejar = cookielib.MozillaCookieJar()

# 从文件中读取cookie内容到变量

cookiejar.load(‘cookie.txt’)

# 使用HTTPCookieProcessor()来创建cookie处理器对象,参数为CookieJar()对象

handler = request.HTTPCookieProcessor(cookiejar)

# 通过 build_opener() 来构建opener

opener = request.build_opener(handler)

response = opener.open(“http://www.baidu.com”)

print(response.read().decode(“utf-8”))

6.4、通过cookie爬取需要用户名密码验证的网站

from urllib import request

import http.cookiejar as cookielib

# 通过CookieJar()类构建一个cookieJar()对象,用来保存cookie的值

cookie = cookielib.CookieJar()

# 通过HTTPCookieProcessor()处理器类构建一个处理器对象,用来处理cookie

# 参数就是构建的CookieJar()对象

cookie_handler = request.HTTPCookieProcessor(cookie)

opener = request.build_opener(cookie_handler)

# 自定义opener的addheadders的参数,可以赋值HTTP报头参数

opener.addheaders = [(“User-Agent”, “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36”)]

# 需要登录的账户和密码

data = {“email”:”xxx@163.com”, “password”:”xxxxxx”}

# 通过urlencode()转码

postdata = request.urlencode(data)

# 构建Request请求对象,包含需要发送的用户名和密码

request = request.Request(“http://www.renren.com/PLogin.do”, data = postdata)

# 通过opener发送这个请求,并获取登录后的Cookie值,

opener.open(request)

# opener包含用户登录后的Cookie值,可以直接访问那些登录后才可以访问的页面

response = opener.open(“http://www.renren.com/410043129/profile”)

# 打印响应内容

print(response.read())

以上就是处理cookie的操作步骤,大家在使用代理IP爬虫遇到无法解决的情况,可以在迅联加速官网查看有无对应解决方案。

关闭
19907977089
关注微信公众号,免费送30分钟时长