gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:27:23 29 4
gpt4 key购买 nike

我有一段 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/

29 4 0
文章推荐: java - 如何在邻接矩阵的广度优先搜索中跟踪每个顶点的深度? ( java )
文章推荐: java - 有没有什么简单的方法可以让方法/程序在按下特定按钮后重新运行?
文章推荐: java - 如何使用 Spring Boot 自动格式化列表 中的所有 bigdecimal 字段