java - 使用 WebEngine 的网页内容选择器

标签 java javafx css-selectors jsoup javafx-webengine

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

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

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

目前我能想到的最佳解决方案如下:

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

最佳答案

Jsoup 确实支持cookie。您只需收集它们并在每个请求中发送它们即可。所以这需要一些工作,但这是可能的。

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

但是,如果速度非常重要,我会再尝试一下 Jsoup。尝试找到 AJAX 调用 Javascript 触发器并直接获取您需要的东西。这比 selenium 或 WebEngine 快得多。

关于java - 使用 WebEngine 的网页内容选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34962086/

相关文章:

java - Guava 18 无法使用 GWT 2.8Snapshot 和 Java 8 进行编译

java - 进度指示器仍然不确定并且没有下载

java - 中心裁剪图像 JavaFX

css - 如果在特定类或 id 下应用 css 规则

HTML 表的 CSS 类正在影响另一个类表布局

java - eclipse 的鱼眼

java - 有没有办法防止 MapStruct 在记录更新期间覆盖值?

javascript - 如何从前端向 Spring 发出 HTTP POST 请求?

java.lang.NullPointerException : Location is required

css - 在 CSS 选择器中使用空格或大于号 >?