使用WebEngine

时间:2016-01-23 10:02:34

标签: java javafx css-selectors jsoup javafx-webengine

我想从网站 URI 加载网页内容,并使用选择器获取一些有用的信息。我尝试了 JSoup ,它允许我select elements with a CSS Selector。不幸的是, Jsoup 不能用作浏览器,也不能解析Javascript或处理cookie。这就是我使用 JavaFX WebEngine 作为浏览器的原因。但 WebEngine 类返回Documents,与 JSoup 相比,选择器的可能性非常有限。唯一的选择器是 Id 标记

是否有一种干净的方式来使用JavaFX的WebEngine以及更专业的选择器可能性?

或者Java中是否有其他浏览器实现允许更专业的选择?实施最好应该很快。

我现在能提出的最佳解决方案如下:

  1. 使用 JavaFX WebEngine 来获取解析Javascript的 Document 对象。
  2. 使用 Transformer 文档转换为 String
  3. 将此String作为参数传递给 JSoup 对象,并使用其 CSS 选择器功能。

1 个答案:

答案 0 :(得分:2)

Jsoup 支持支持Cookie。您只需收集它们并在每个请求中发送它们。所以涉及到一些工作,但这是可能的。

您的解决方案可行,但我怀疑JavaFX的WebEngine是您的最佳选择,除非您的应用程序无论如何都使用JavaFX,您还需要显示Web内容。如果你只需要你描述的任务,我肯定会推荐selenium webdriver来完成这项工作。有了它,您可以远程控制真正的浏览器访问所有内容。有许多标准浏览器的绑定,包括phantomjs作为无头webkit解决方案以实现最大兼容性,HTMLUnit仅用于Java解决方案。

然而,如果速度非常令人担忧,我会再次尝试Jsoup。尝试找到JAX触发器的AJAX调用并直接获取所需的东西。这比selenium或WebEngine要快得多。