Python中如何使用Selenium的Chrome Headless模式?
因工作需要大量账号登陆进某网站做统一修改,故使用 selenium 模拟登陆操作.但是遇到一个问题: 如果我不用 headless,眼瞅着他干活,一切都没问题 但是如果我用了 headless 参数,那么我有个正则,就匹配不到.导致无法完成. 请教下,用了 headless 参数,获取的 browser.page_source 不一样吗? 请教各位,多谢!
Python中如何使用Selenium的Chrome Headless模式?
9 回复
你应该做的是 对比下 page_source,看哪里不一样
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 配置Chrome选项
chrome_options = Options()
chrome_options.add_argument("--headless") # 启用无头模式
chrome_options.add_argument("--no-sandbox") # 绕过OS安全模型
chrome_options.add_argument("--disable-dev-shm-usage") # 避免共享内存问题
chrome_options.add_argument("--disable-gpu") # 某些系统需要禁用GPU加速
# 创建WebDriver实例
driver = webdriver.Chrome(options=chrome_options)
try:
# 访问网页
driver.get("https://www.example.com")
# 获取页面标题
print(f"页面标题: {driver.title}")
# 截图保存
driver.save_screenshot("headless_screenshot.png")
print("截图已保存")
# 执行其他操作...
# 例如:driver.find_element("id", "element_id").click()
finally:
# 关闭浏览器
driver.quit()
关键点说明:
--headless是核心参数,告诉Chrome以无界面模式运行--no-sandbox和--disable-dev-shm-usage在Linux服务器上常需要添加- 所有操作和普通模式完全一样,只是看不到浏览器界面
- 记得最后调用
driver.quit()释放资源
一句话总结: 通过 Options() 添加 --headless 参数就能启用无头模式。
可能是 css 或 js 渲染没打开
打印了 page_source,对比 i 了下,应该是 wait.until 的元素没定位对,所以,我要抓取的元素还没加载上,我就 re 去匹配了
加延时试试~
之前正常可能是网速问题?
我已经修改 wait.until 的元素为我要匹配的,已经正常,感谢各位
其实我更好奇的是,为啥我 chromeheadless 死活不行,后来还是用 firefox 了。。。
是不是 webdriver 和 chrome 的版本不匹配?
我用的 cent,虽然是基于 62 版本的,但是提示版本不对,专门下了个官方的 chrome 才可以.
不太清楚,我用的 geckodriver.exe

