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

关键点说明:

  1. --headless 是核心参数,告诉Chrome以无界面模式运行
  2. --no-sandbox--disable-dev-shm-usage 在Linux服务器上常需要添加
  3. 所有操作和普通模式完全一样,只是看不到浏览器界面
  4. 记得最后调用 driver.quit() 释放资源

一句话总结: 通过 Options() 添加 --headless 参数就能启用无头模式。

可能是 css 或 js 渲染没打开

打印了 page_source,对比 i 了下,应该是 wait.until 的元素没定位对,所以,我要抓取的元素还没加载上,我就 re 去匹配了

加延时试试~

之前正常可能是网速问题?
我已经修改 wait.until 的元素为我要匹配的,已经正常,感谢各位

其实我更好奇的是,为啥我 chromeheadless 死活不行,后来还是用 firefox 了。。。

是不是 webdriver 和 chrome 的版本不匹配?
我用的 cent,虽然是基于 62 版本的,但是提示版本不对,专门下了个官方的 chrome 才可以.

不太清楚,我用的 geckodriver.exe

回到顶部