我需要使用Selenium每天解析几千页。
一切正常,但每个页面解析都需要重新打开浏览器,这需要时间。
你知道如何在java中以静默模式启用Selenium来加速解析吗?
谢谢
答案 0 :(得分:2)
如果您担心打开一千个浏览器的速度,可以切换到使用HtmlUnitDriver
类作为WebDriver
,因为它是无头的并且花费的时间少得多关闭比完整的浏览器实例。
编辑:我假设您需要关闭浏览器才能重置会话状态?如果是这样,那么您可以通过构造代码来彻底破坏会话,而不是完全关闭浏览器,从而可行地克服这一要求。如果你的会话是由cookie维护的,那么你可以这样做:
driver.manage().deleteAllCookies(); // or
driver.manage().deleteCookieNamed("JSESSIONID"); // if using J2EE, for example
如果您不需要关闭浏览器,那么为什么不重复使用相同的WebDriver
?
答案 1 :(得分:1)
不要为每个页面打开一个新浏览器?只需为所有页面重用当前的浏览器实例。
FirefoxDriver driver = new FirefoxDriver();
List<String> urls = new ArrayList<>();
// load the urls List
for (String url : urls)
{
driver.get(url);
// do stuff to page
}
我制作了一些List&lt;&gt;存储数组。显然,您可以使用存储您需要处理的URL的任何数据类型替换它,并循环使用这些数据。