在使用 Selenium Headless Chrome 时,开发者可能会遇到一个令人困扰的问题:尽管浏览器成功启动,但通过 driver.page_source 获取到的页面源代码却为空,显示为 <html><head></head><body></body></html>。 即使尝试设置 User Agent 或其他 Chrome 选项,问题依然存在。这通常是由于使用了旧的 Headless Chrome 实现方式导致的。
问题原因
旧的 --headless 参数实际上启动的是一个独立的 Chrome 实现,与有界面的 Chrome 浏览器在底层机制上有所不同。这种差异可能导致某些网站或 JavaScript 代码无法正常加载,从而导致页面内容为空。
解决方案:使用 --headless=new 参数
最新的 Chrome 版本引入了一个新的 Headless 模式,通过 --headless=new 参数启用。这种模式使用与有界面 Chrome 浏览器相同的渲染引擎和底层机制,从而避免了旧模式下可能出现的问题。
代码示例

全面的AI聚合平台,一站式访问所有顶级AI模型


以下是如何在 Selenium 中使用 --headless=new 参数的代码示例:
from selenium import webdriver from selenium.webdriver.chrome.options import Options # 创建 ChromeOptions 对象 options = Options() # 添加 headless 参数 (新的 headless 模式) options.add_argument("--headless=new") # 创建 WebDriver 对象 driver = webdriver.Chrome(options=options) # 打开网页 driver.get("https://www.example.com") # 获取页面源代码 page_source = driver.page_source # 打印页面源代码 print(page_source) # 关闭浏览器 driver.quit()
注意事项
- 确保您使用的 Chrome 浏览器版本支持 --headless=new 参数。建议更新到最新版本。
- 如果在使用 --headless=new 后仍然遇到问题,可以尝试添加其他 Chrome 选项,例如 --disable-gpu 或 --no-sandbox,但通常情况下 --headless=new 已经足够解决页面空白问题。
总结
在使用 Selenium Headless Chrome 时,如果遇到页面源代码为空的问题,首要尝试的解决方案是使用 --headless=new 参数替代旧的 --headless 参数。 这种新的 Headless 模式基于与有界面 Chrome 浏览器相同的底层实现,能够更好地兼容各种网站和 JavaScript 代码,从而避免页面加载问题。通过本文提供的代码示例和注意事项,您可以轻松解决 Headless Chrome 中的页面空白问题,并确保您的自动化测试或爬虫程序能够正常运行。 更多关于新的 Headless 模式的信息,请参考 Chrome 官方文档:https://www.php.cn/link/f9aa778d602c7ba036e50f85deeb7250
以上就是Selenium Headless Chrome 页面空白问题解决方案的详细内容,更多请关注知识资源分享宝库其它相关文章!
相关标签: javascript java html 浏览器 爬虫 webdriver JavaScript chrome html https 自动化 大家都在看: Python">JavaScript => Python python能代替JavaScript吗 如何从Python中运行Javascript? Python 与 Javascript 之比较 Python和JavaScript之间的区别是什么?
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。