Получение файла HTML после загрузки его методов инициализации javascript в Java - PullRequest
0 голосов
/ 05 октября 2019

У меня есть 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);

Но ни сработало.

Как заставить мою программу ждать, пока все не будетполная

1 Ответ

1 голос
/ 25 октября 2019

Чтобы вернуть html-ресурс после его загрузки, вам нужно получить данные асинхронно. Я считаю, что для достижения этого вы хотите использовать Java Future. Попробуйте заглянуть в класс CompletetableFuture Java Futures

Вы также можете взглянуть на этот вопрос и ответ Как выполнить массив CompletetableFuture

Как примечание, чтобы сделать это в JavaScript, это можно сделать с помощью Callback или Promise, плюсы и минусы которых описаны здесь: Обещания Javascript

...