VBA中使用Selenium能否不启动浏览器即可获取URL对应内容?
可行实现方案
Selenium支持启用浏览器的无头(Headless)运行模式,不会弹出可见的浏览器窗口,即可完成页面请求、元素操作、信息提取等全量功能,你可以通过给ChromeDriver添加启动参数实现需求,修改后的代码如下:
Option Explicit Sub TestSeleniumHeadless() Dim MyBrowser As Selenium.ChromeDriver Set MyBrowser = New Selenium.ChromeDriver ' 添加无头模式启动参数 MyBrowser.AddArgument "--headless=new" ' 可选补充参数,提升运行稳定性 MyBrowser.AddArgument "--disable-gpu" MyBrowser.AddArgument "--no-sandbox" MyBrowser.AddArgument "--disable-extensions" ' 启动浏览器(无可见窗口) MyBrowser.Start ' 发送GET请求 MyBrowser.Get "https://www.google.com/" ' 示例:获取页面标题输出到立即窗口 Debug.Print MyBrowser.Title ' 也可以获取完整页面源码 Debug.Print MyBrowser.PageSource ' 用完记得关闭驱动释放资源 MyBrowser.Quit Set MyBrowser = Nothing End Sub
补充说明
- 如果使用Edge浏览器,只需把
Selenium.ChromeDriver替换为Selenium.EdgeDriver即可,无头参数通用 - 运行前请确认本地Chrome浏览器版本和你引用的Selenium包内的ChromeDriver版本匹配,否则会出现启动失败的问题
- 对比MSXML2.XMLHTTP方案,Selenium无头模式会自动加载页面资源、执行JS脚本,适合需要获取JS渲染后内容的场景,如果仅需要静态页面内容,XMLHTTP方案资源占用更低、运行速度更快
内容的提问来源于stack exchange,提问作者Red
相关产品推荐
相关产品推荐

