破障篇-Day23|隐影施法咒:无头模式,后台静默运行浏览器

1 次阅读 2026-10-20 16:44

📖 知识点

1. 什么是无头模式?

无头(Headless)模式:浏览器在后台静默运行,不显示窗口,但功能照常(加载页面、执行 JS、抓数据)。适合服务器部署、批量自动化、定时任务。

💡 生活比喻 普通模式像 "当众表演",无头模式像 "暗中修炼"—— 招式照练,只是不给你看。

2. 如何开启无头模式

创建 ChromiumPage 时传入无头选项:

from DrissionPage import ChromiumPage, ChromiumOptions

# 配置无头模式
co = ChromiumOptions()
co.headless(True)   # 开启无头

# 用配置创建页面对象
page = ChromiumPage(co)
page.get("https://www.baidu.com")
print(page.title)

co.headless(True) 开启无头;co.headless(False) 关闭(显示窗口)。

3. 无头模式的注意点

  • 依然能 get、ele、click、抓数据,和普通模式一样用
  • 无头环境下有些网站会识别并可能限制,可配合伪装(Day27)
  • 看不到实时画面,调试时可临时开回来

完整示例

from DrissionPage import ChromiumPage, ChromiumOptions

# 隐影施法咒:开启无头模式
co = ChromiumOptions()
co.headless(True)

page = ChromiumPage(co)
page.get("https://www.baidu.com")

# 无头环境下照常抓数据
print("📖 标题:", page.title)
print("🔗 地址:", page.url)

⚠️ 易错提醒

  1. 无头模式不显示窗口,别用眼睛 "验证",要打印 title/url 判断是否成功
  2. 无头模式首次启动可能稍慢,属正常
  3. 调试阶段建议先显示窗口,确认脚本没问题再转无头

⚔️ Kata 实战任务

任务需求:

  1. 导入 ChromiumPage 和 ChromiumOptions
  2. 创建 ChromiumOptions,用 co.headless(True) 开启无头模式
  3. 用无头配置创建 Page 对象
  4. 访问百度,打印标题和地址(无头下照样抓数据)
  5. 打印无头模式完成提示

参考代码

from DrissionPage import ChromiumPage, ChromiumOptions

# 隐影施法咒:开启无头模式
co = ChromiumOptions()
co.headless(True)

# 用无头配置创建页面对象(无窗口弹出)
page = ChromiumPage(co)
page.get("https://www.baidu.com")

# 无头环境下照样抓数据
print("🕶️ 无头模式运行中……")
print("📖 网页标题:", page.title)
print("🔗 网页地址:", page.url)
print("✅ 无头模式抓取完成(全程无窗口)")

运行输出(示意):

🕶️ 无头模式运行中……
📖 网页标题: 百度一下,你就知道
🔗 网页地址: https://www.baidu.com
✅ 无头模式抓取完成(全程无窗口)

💡 观察:这次运行不会弹出任何浏览器窗口,但数据一样抓到了。这就是无头模式 —— 适合挂服务器、批量跑。

🧠 思考题

  1. 无头模式和普通模式的功能上有什么区别?主要用在哪类场景?
  2. 为什么调试阶段不建议直接用无头模式?