📖 知识点
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)
⚠️ 易错提醒
- 无头模式不显示窗口,别用眼睛 "验证",要打印 title/url 判断是否成功
- 无头模式首次启动可能稍慢,属正常
- 调试阶段建议先显示窗口,确认脚本没问题再转无头
⚔️ Kata 实战任务
任务需求:
- 导入 ChromiumPage 和 ChromiumOptions
- 创建
ChromiumOptions,用co.headless(True)开启无头模式 - 用无头配置创建 Page 对象
- 访问百度,打印标题和地址(无头下照样抓数据)
- 打印无头模式完成提示
参考代码
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
✅ 无头模式抓取完成(全程无窗口)
💡 观察:这次运行不会弹出任何浏览器窗口,但数据一样抓到了。这就是无头模式 —— 适合挂服务器、批量跑。
🧠 思考题
- 无头模式和普通模式的功能上有什么区别?主要用在哪类场景?
- 为什么调试阶段不建议直接用无头模式?
行者孙Python