我正在使用 selenium java 进行网页抓取,基本上该应用程序创建了一个WebDriver并一直使用它来处理所有需要的页面(每 1 或 2 秒它会为一个新页面调用get()并提取相关内容)。
我正在使用这样的 Firefox无头模式:
String driverPath = this.config.getString("browser.firefox.driverPath");
FirefoxBinary firefoxBinary = new FirefoxBinary();
if (useHeadlessMode) {
firefoxBinary.addCommandLineOptions("--headless");
}
System.setProperty("webdriver.gecko.driver", driverPath);
FirefoxOptions firefoxOptions = new FirefoxOptions();
firefoxOptions.setBinary(firefoxBinary);
webDriver = new FirefoxDriver(firefoxOptions);
我意识到,当应用程序运行 2 小时时,它将使用多达 8GB 内存,并且get()调用变得非常慢(可能需要大约 10 秒)。
我的问题是我在创建WebDriver时会错过任何配置吗?或任何其他将内存使用保持在较低水平的解决方案,因为我正在考虑在将应用程序部署到云后启动多个(约 100 个 WebDrivers)。
我正在考虑的解决方案是,对于一定数量的操作,对当前驱动程序执行driver.quit()并初始化一个新驱动程序。这听起来合理吗?