行者孙Python

破障篇-Day21|记忆读写咒:读取、新增、清除 Cookie 网页记忆

📖 知识点

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()

⚠️ 易错提醒

  1. Cookie 有域名限制,set 时要写对 domain,否则不生效
  2. Cookie 通常有有效期,过期后需重新获取
  3. 登录后的 Cookie 才能用于需要登录的抓取

⚔️ Kata 实战任务

任务需求:

  1. 导入 ChromiumPage,访问百度
  2. 用 page.cookies() 读取当前页面所有 Cookie,打印数量
  3. 用 page.cookie("名字") 尝试读取某个 Cookie 值
  4. 用 page.set.cookies({...}) 手动新增一个测试 Cookie
  5. 再次读取,确认新增成功
  6. 最后用 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

🧠 思考题

  1. 为什么 "保持登录" 要用 Cookie?Cookie 主要存什么信息?
  2. 手动 set.cookies() 注入登录凭证,相比重新走一遍登录流程,优势是什么?
‹ 返回目录
🏠首页 Python 📦资源 👤关于我