如何配置Selenium ChromeOptions以低资源获取网页标题/头部信息
优化Selenium ChromeOptions以低资源获取动态页面标题/头部标签
你现在用Chrome 129.0.6668.59正式版64位,搭配ChromeDriver 129.0.6668.58,想以最少硬件资源抓取各类网站(Youtube、Instagram、TikTok、博客、新闻等)的标题或h1/h2标签。部分平台的内容靠JS动态加载,没法精准筛选关联JS,只能运行全部可用JS,当前的ChromeOptions配置如下:
ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.addArguments(/*"--headless=new", */ "--disable-web-security", "--allow-running-insecure-content", "--disable-site-isolation-trials", "--disable-popup-blocking", "--disable-features=IsolateOrigins,site-per-process", "--blink-settings=imagesEnabled=false", "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36", "--disable-software-rasterizer", "--disable-blink-features", "--disable-browser-side-navigation", "--window-size=1200,640", "--disable-gpu", "--disable-notifications", "--disable-extensions", "--ignore-certificate-errors", "--remote-allow-origins=*", "--no-sandbox", "--disable-dev-shm-usage", "--port=" + curPort); // chromeOptions.setBrowserVersion("latest"); chromeOptions.setPageLoadStrategy(PageLoadStrategy.EAGER); chromeOptions.setAcceptInsecureCerts(true); Duration duration = Duration.of(5, ChronoUnit.SECONDS); chromeOptions.setScriptTimeout(duration); chromeOptions.setPageLoadTimeout(duration); chromeOptions.setImplicitWaitTimeout(duration); chromeOptions.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.DISMISS_AND_NOTIFY); curPort++; if (curPort > MAX_PORT) { curPort = MIN_PORT; }
优化后的ChromeOptions配置
ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.addArguments( "--headless=new", // 启用新版无头模式,资源占用更低且兼容动态JS "--disable-popup-blocking", "--blink-settings=imagesEnabled=false", // 禁用图片加载减少资源消耗 "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.6668.59 Safari/537.36", // 匹配当前Chrome版本,避免被识别为异常请求 "--disable-software-rasterizer", "--disable-notifications", "--disable-extensions", "--ignore-certificate-errors", "--remote-allow-origins=*", "--no-sandbox", "--disable-dev-shm-usage", "--port=" + curPort, "--disable-background-networking", // 禁用后台冗余网络请求 "--disable-background-timer-throttling", "--disable-backgrounding-occluded-windows", "--disable-renderer-backgrounding", "--disable-default-apps", // 禁用默认应用释放资源 "--mute-audio", // 静音避免音频加载占用资源 "--disable-features=Translate,MediaRouter,Autoplay", // 禁用非必要功能 "--window-size=800,600" // 缩小窗口尺寸降低渲染压力 ); chromeOptions.setPageLoadStrategy(PageLoadStrategy.NORMAL); // 改用NORMAL策略,确保动态JS执行完成 chromeOptions.setAcceptInsecureCerts(true); Duration duration = Duration.of(10, ChronoUnit.SECONDS); // 延长超时适配动态页面加载 chromeOptions.setScriptTimeout(duration); chromeOptions.setPageLoadTimeout(duration); chromeOptions.setImplicitWaitTimeout(duration); chromeOptions.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.DISMISS_AND_NOTIFY); curPort++; if (curPort > MAX_PORT) { curPort = MIN_PORT; }
关键调整说明
- 启用新版无头模式:
--headless=new是Chrome 112+推出的新版无头模式,比旧版更接近正常浏览器行为,资源占用更低,还能正常执行动态JS,完美适配Youtube、TikTok这类平台的动态内容加载。 - 修正User-Agent:改成和当前Chrome版本一致的UA,避免被网站识别为爬虫或异常请求导致内容加载失败。
- 移除不安全冗余参数:删掉
--disable-web-security、--allow-running-insecure-content这类降低浏览器安全性的参数,抓标题不需要牺牲安全;同时去掉--disable-blink-features、--disable-browser-side-navigation这类无意义的宽泛禁用项,避免影响必要功能。 - 调整页面加载策略:把
EAGER换成NORMAL,确保页面所有必要JS执行完成,保证动态生成的标题、h1/h2标签能被正确抓取。 - 增加资源优化项:新增一系列禁用后台活动、非必要功能的参数,缩小窗口尺寸,进一步降低CPU、内存占用。
- 延长超时时间:把5秒调整为10秒,给动态页面足够的JS执行时间,避免因加载超时导致内容抓取不全。
内容的提问来源于stack exchange,提问作者kipid
相关产品推荐
相关产品推荐

