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