📖 知识点
1. 什么是多 Page 并行?
一个脚本里创建多个 Page 对象,每个 Page 对应一个浏览器标签页 / 实例,各自独立访问、独立操作,互不干扰:
# 创建多个Page对象
page1 = ChromiumPage()
page2 = ChromiumPage()
每个 Page 就像一颗独立的水晶球,可以同时去不同的网页干活。
2. 多个 Page 并行干活
page1.get("https://www.baidu.com")
page2.get("https://www.bing.com")
page1 盯百度,page2 盯必应,互不影响,并行采集。
3. 核心理解
| 点 | 说明 |
|---|---|
| 相互独立 | 每个 Page 有独立的标签页、URL、操作状态 |
| 各自操作 | 每个 Page 都能独立 get / ele / click |
| 并行优势 | 同时访问多个网页,比一个个串行快 |
💡 生活比喻 一个水晶球 = 一名学徒。多开几个水晶球,就是多招几名学徒,大家同时去不同地方取货,自然比一个人来回跑快。
⚠️ 易错提醒
- 多个 Page 各管各的,操作 page1 不要误以为影响 page2
- 资源占用:开多个浏览器会占更多内存,别贪多
- 想真正 "同时跑" 多任务,配合 Day34 的线程 / 异步调度更高效
⚔️ Kata 实战任务
任务需求:
- 导入 ChromiumPage
- 创建两个 Page 对象:page1、page2
- page1 访问百度,page2 访问必应
- 分别打印两个 Page 的标题,观察并行工作
- 确认两者互不干扰
参考代码
from DrissionPage import ChromiumPage
# 分影之术:召唤两颗水晶球
page1 = ChromiumPage()
page2 = ChromiumPage()
# 让它们各自去不同的网页
page1.get("https://www.baidu.com")
page2.get("https://www.bing.com")
# 分别查看各自的成果
print("🔮 page1(水晶球1)标题:", page1.title)
print("🔮 page2(水晶球2)标题:", page2.title)
# 验证互不干扰:page1仍停在百度
print("✅ page1 地址:", page1.url)
print("✅ page2 地址:", page2.url)
运行输出(示意):
🔮 page1(水晶球1)标题: 百度一下,你就知道
🔮 page2(水晶球2)标题: Bing
✅ page1 地址: https://www.baidu.com
✅ page2 地址: https://www.bing.com
💡 观察:两颗水晶球各自去了不同的网页,互不影响。这就是多 Page 并行的基础 —— 分工合作。
🧠 思考题
- 多个 Page 对象之间是相互独立的吗?操作 page1 会影响到 page2 吗?
- 多个 Page 并行访问相比 "一个 Page 一个个串行访问",优势是什么?有什么代价(资源)?