爬虫多次爬取时候cookie的存储用于登入
一.用requests模块自动保存(保存缓存中)
-
构建一个session对象session = requests.session()
-
用构建的session代替requests进行访问他就会自动存啦
复制import requests
session = requests.session()
r = session.get(......) #他会存返回的cookies不会存发送的cookies
r = session.post(......) #在请求同一url他会把存的cookies发送过去
注意点
- 只存响应的cookie
- 不存发送请求时候带的cookie
- 不同url没有影响
- cookie名字一样会覆盖掉
原因自己看下面自己看哈,有问题可以私聊我
二.将cookie存本地
1.基于session(推荐使用代码少哈哈)
复制import requests
from http import cookiejar
session =requests.session()
session.cookies = cookiejar.LWPCookieJar() #MozillaCookieJar或LWPCookieJar。
session.cookies.save(filename='1.txt') //存cookie
session.cookies.load(filename='1.txt') //读cookie
2.普通请求把cookies存本地
这个参照https://www.cnblogs.com/fu-yong/p/9032902.html
第一次访问
复制from urllib import request,parse
from http import cookiejar
# 创建filecookiejar实例对象
# 它需要一个参数,既cookie保存的位置
filename = 'cookie.txt'
cookie = cookiejar.FileCookieJar(filename)
# 根据创建的cookie生成cookie的管理器
cookie_handle = request.HTTPCookieProcessor(cookie)
# 创建http请求管理器
http_handle = request.HTTPHandler()
# 创建https管理器
https_handle = request.HTTPSHandler()
# 创建求求管理器,将上面3个管理器作为参数属性
# 有了opener,就可以替代urlopen来获取请求了
opener = request.build_opener(cookie_handle,http_handle,https_handle)
# 登录url,需要从登录form的action属性中获取
url = 'xxxxxxxxxxxxxx'
# 登录所需要的数据,数据为字典形式,
# 此键值需要从form扁担中对应的input的name属性中获取
data = {
'email':'xxxx',
'password':'xxxxx'
}
# 将数据解析成urlencode格式
data = parse.urlencode(data)
req = request.Request(url,data=data)
# 正常是用request.urlopen(),这里用opener.open()发起请求
response = opener.open(req)
# 保存cookie文件
cookie.save()
第二次访问
复制from urllib import request,parse
from http import cookiejar
# 创建cookiejar实例对象
cookie = cookiejar.FileCookieJar()
# 读取已经保存的cookie文件
# 读取之后,就无需登录,直接访问主页即可
cookie.load('cookie.txt')
# 根据创建的cookie生成cookie的管理器
cookie_handle = request.HTTPCookieProcessor(cookie)
# 创建http请求管理器
http_handle = request.HTTPHandler()
# 创建https管理器
https_handle = request.HTTPSHandler()
# 创建求求管理器,将上面3个管理器作为参数属性
# 有了opener,就可以替代urlopen来获取请求了
opener = request.build_opener(cookie_handle,http_handle,https_handle)
url = 'http://xxxxxx'
res = opener.open(url)
html = res.read().decode()
with open('renren.html','w') as f:
f.write(html)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理