Java Selenium Chrome驱动程序限制大规模Web刮取

Java Selenium Chrome驱动程序限制大规模Web刮取,java,selenium,selenium-webdriver,selenium-chromedriver,google-chrome-headless,Java,Selenium,Selenium Webdriver,Selenium Chromedriver,Google Chrome Headless,我计划在我的项目中使用Selenium Chrome驱动程序,它将用于对多个公共网站(如kayak或skyscanner)进行网页抓取。因此,将有一个REST-GET端点,我的后端将启动headless-Chrome来抓取多个网站,并最终返回一个被操纵的JSON 我想知道Chrome驱动程序的可伸缩性有多大,因为它听起来像是一个无头Chrome实例需要在收到请求时启动 更新:使用Google Chrome Headless的问题请查找我在实施过程中注意到的phantom js的优点和缺点。希望这

我计划在我的项目中使用Selenium Chrome驱动程序,它将用于对多个公共网站(如kayak或skyscanner)进行网页抓取。因此,将有一个REST-GET端点,我的后端将启动headless-Chrome来抓取多个网站,并最终返回一个被操纵的JSON

我想知道Chrome驱动程序的可伸缩性有多大,因为它听起来像是一个无头Chrome实例需要在收到请求时启动


更新:使用Google Chrome Headless的问题

请查找我在实施过程中注意到的phantom js的优点和缺点。希望这能有所帮助

缺点:

优点:


您也可以使用html驱动程序,它比phantom快得多,但即使是它也有自己的局限性,您需要在实现之前加以注意。

您是否考虑过无头chrome?

我不确定您是否真的需要使用PhantomJS

Chrome在几个月前实施了“无头”模式。 “无头铬”和PhantomJS做的一样,而且做得更好。 我听说PhantomJS的作者甚至说他们将不再支持它

您可以在Selenide中启用无头模式,只需在线:

Configuration.headless = true;

它无法识别id属性?你能不能也分享一下性能问题?我上面的用例是否可行?是的,大多数情况下,它都无法识别id。性能取决于您的项目有多大以及您的代码有多少业务逻辑。如果它很大,那么与Chrome驱动程序相比,它将非常差。我想对于您的用例,我建议使用Chrome,因为它会调用Web服务和在phantom中获取响应对于断言来说相当耗时。您可以尝试一下,因为在没有看到代码的情况下很难说。我知道这一点,但我认为这并不稳定是的,是的,但问题仍然是一样的,在每次有请求时,我们都会启动headless chrome的情况下,为大量请求提供服务是否可行?我正在尝试找出使用headless browser来处理这样的工作流是否可行。我尝试了无头chrome,与htmlunit相比速度非常慢,因为它必须实际启动浏览器应用程序,进入网站,然后刮取数据…如果有数百万的请求刮取网站呢?
1)Test case execution is faster when compared to chrome driver
2)No browser is required it will run without GUI. 
3)No much configurations are needed when compared to chromedriver.
Configuration.headless = true;