📖 知识点
1. 什么是 Cookie?
Cookie 是浏览器保存的一小段数据(键值对),记录你的访问状态,如登录凭证、语言偏好。网站靠它认出 "你是不是已登录的那个用户"。
2. 读取 Cookie
获取当前页面所有 Cookie:
# 获取全部cookie,返回列表
cookies = page.cookies()
print(cookies)
获取单个 Cookie 值:
# 按名字获取某个cookie
token = page.cookie("token")
print(token)
3. 新增 / 设置 Cookie
手动给浏览器写入一个 Cookie(用于模拟已登录状态):
# 设置单个cookie,dict形式:名字、值、域名
page.set.cookies({'name': 'session_id', 'value': 'abc123', 'domain': '.example.com'})
常用于:已有登录凭证时,直接注入 cookie 免去重新登录,常用于抓取需登录的数据。
4. 清除 Cookie
清除全部 Cookie(退出登录、重置状态):
# 清除所有cookie
page.cookies.clear()
💡 三招总结
操作 咒语 读取全部 page.cookies()读取单个 page.cookie("名字")设置 page.set.cookies({...})清除 page.cookies.clear()
⚠️ 易错提醒
- Cookie 有域名限制,set 时要写对 domain,否则不生效
- Cookie 通常有有效期,过期后需重新获取
- 登录后的 Cookie 才能用于需要登录的抓取
⚔️ Kata 实战任务
任务需求:
- 导入 ChromiumPage,访问百度
- 用
page.cookies()读取当前页面所有 Cookie,打印数量 - 用
page.cookie("名字")尝试读取某个 Cookie 值 - 用
page.set.cookies({...})手动新增一个测试 Cookie - 再次读取,确认新增成功
- 最后用
page.cookies.clear()清除全部 Cookie,打印确认
参考代码
from DrissionPage import ChromiumPage
page = ChromiumPage()
page.get("https://www.baidu.com")
# 读取当前全部cookie
cookies = page.cookies()
print(f"🍪 当前共 {len(cookies)} 个Cookie")
# 新增一个测试Cookie
page.set.cookies({'name': 'my_test', 'value': 'hello_123', 'domain': '.baidu.com'})
print("✅ 已新增测试Cookie:my_test")
# 读取单个cookie验证
val = page.cookie("my_test")
print("🔎 读取my_test的值:", val)
# 清除全部cookie
page.cookies.clear()
print("🗑️ 已清除全部Cookie")
运行输出(示意):
🍪 当前共 6 个Cookie
✅ 已新增测试Cookie:my_test
🔎 读取my_test的值: hello_123
🗑️ 已清除全部Cookie
🧠 思考题
- 为什么 "保持登录" 要用 Cookie?Cookie 主要存什么信息?
- 手动
set.cookies()注入登录凭证,相比重新走一遍登录流程,优势是什么?
行者孙Python