使用 WebEngine 的网页内容选择器
Webpage content selector using WebEngine
我想从站点 URI 加载 Web 内容并使用选择器获取一些有用的信息。我尝试了 JSoup,它允许我 select elements with a CSS Selector. Unfortunately Jsoup doesn't work as a browser and doesn't parse Javascript or handles cookies. That's why I looked into using the JavaFX WebEngine which works as a browser. But The WebEngine class returns Documents 与 JSoup 相比,选择器的可能性非常有限。唯一的选择器是 Id 或 Tag.
是否有一种干净的方法来使用 JavaFX 的 WebEngine 以及更专业的选择器可能性?
或者 Java 中是否有其他浏览器实现允许更专业的选择?实施应该最好是快速的。
目前我能想到的最佳解决方案如下:
- 使用WebEngine of JavaFX得到一个Document对象Java脚本被解析。
- 使用 Transformer.
将 Document 转换为 String
- 将此字符串作为参数传递给 JSoup 对象并使用它们的 CSS 选择器功能。
Jsoup 支持 cookie。您只需要收集它们并在每个请求中发送它们。所以这涉及一些工作,但这是可能的。
您的解决方案可行,但我怀疑 JavaFX 的 WebEngine 是您的最佳选择,除非您的应用程序无论如何都在使用 JavaFX 并且您还需要显示 Web 内容。如果你只需要它来完成你描述的任务,我肯定会推荐 selenium webdriver 来完成这项工作。有了它,您可以远程控制真正的浏览器来访问所有内容。有许多标准浏览器的绑定,包括 phantomjs 作为最大兼容性的无头 webkit 解决方案和 HTMLUnit 作为 Java 唯一解决方案。
但是,如果速度很重要,我会再试一次 Jsoup。尝试找到 AJAX 调用 Java 脚本触发器并直接获取您需要的东西。这将比 selenium 或 WebEngine 快得多。
我想从站点 URI 加载 Web 内容并使用选择器获取一些有用的信息。我尝试了 JSoup,它允许我 select elements with a CSS Selector. Unfortunately Jsoup doesn't work as a browser and doesn't parse Javascript or handles cookies. That's why I looked into using the JavaFX WebEngine which works as a browser. But The WebEngine class returns Documents 与 JSoup 相比,选择器的可能性非常有限。唯一的选择器是 Id 或 Tag.
是否有一种干净的方法来使用 JavaFX 的 WebEngine 以及更专业的选择器可能性?
或者 Java 中是否有其他浏览器实现允许更专业的选择?实施应该最好是快速的。
目前我能想到的最佳解决方案如下:
- 使用WebEngine of JavaFX得到一个Document对象Java脚本被解析。
- 使用 Transformer. 将 Document 转换为 String
- 将此字符串作为参数传递给 JSoup 对象并使用它们的 CSS 选择器功能。
Jsoup 支持 cookie。您只需要收集它们并在每个请求中发送它们。所以这涉及一些工作,但这是可能的。
您的解决方案可行,但我怀疑 JavaFX 的 WebEngine 是您的最佳选择,除非您的应用程序无论如何都在使用 JavaFX 并且您还需要显示 Web 内容。如果你只需要它来完成你描述的任务,我肯定会推荐 selenium webdriver 来完成这项工作。有了它,您可以远程控制真正的浏览器来访问所有内容。有许多标准浏览器的绑定,包括 phantomjs 作为最大兼容性的无头 webkit 解决方案和 HTMLUnit 作为 Java 唯一解决方案。
但是,如果速度很重要,我会再试一次 Jsoup。尝试找到 AJAX 调用 Java 脚本触发器并直接获取您需要的东西。这将比 selenium 或 WebEngine 快得多。