javascript - 在 Java 中加载 JavaScript 初始化方法后获取 HTML 文件

标签 javascript java jsoup http-get

我有一段 Java 代码,我想在其中加载 HTML 文件并解析它。我正在使用 jsoup 库,一切正常。

问题是当我获取 HTML 资源时,页面加载和完成需要一些时间,可能某些 JavaScript 代码正在运行并从数据库获取数据以放入 HTML 资源。

但是当用Java获取资源时,它不会等待它完成并返回一个带有空字段的HTML文件。

我尝试过经典的jsoup方式:

Connection conn = Jsoup.connect("http://www.tsetmc.com/loader.aspx?ParTree=151311&i=43362635835198978");
Document doc = conn.get(); 
String title = doc.title();
System.out.println(title);

WebClient包:

WebClient client = new WebClient(BrowserVersion.FIREFOX_60);
client.waitForBackgroundJavaScriptStartingBefore(5000);
HtmlPage page = client.getPage("http://www.tsetmc.com/loader.aspx?ParTree=151311&i=43362635835198978");
String pageTxt = page.asText();
System.out.println(pageTxt);

但两者都不起作用。

如何让我的程序等到一切都完成?

最佳答案

要在加载 html 资源后返回该资源,您需要异步检索数据。为了实现这一目标,我相信您想要使用 Java Future。尝试查看 CompletetableFuture 类 Java Futures

您还可以看看这个问答How to execute an array of CompletetableFuture

作为旁注,在 JavaScript 中可以使用回调或 Promise 来完成此操作,其优点和缺点概述如下:Javascript Promises

关于javascript - 在 Java 中加载 JavaScript 初始化方法后获取 HTML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58246545/

相关文章:

javascript - 按索引访问非数字对象属性?

java - 通过 Java 代码搜索 XML

java - JMenu 栏项目(退出)不起作用

java - 使用 POI 和 Jsoup 的超链接位于错误位置

java - 使用jsoup从 "a"inside "span"inside "class"提取属性用于体育软件

javascript - 如何在 WebGL 中提供 x 轴和 y 轴值?

javascript - 使用 Javascript 加载 jQuery 并使用 jQuery

javascript - 如何从字符串值中仅获取部分文本?

java - JPanel 内的 JPanel 过多(使用 GridBagLayout)

java - 在 foreach 循环中选择特定项目?