Всегда помните, что официальная документация - ваш друг.
Во-первых, вам нужно дождаться полной загрузки страницы. Вы делаете это, наблюдая за загрузчиком WebEngine, который по окончании будет иметь состояние SUCCEEDED . Этот подход подробно описан в документации WebEngine .
webEngine.getLoadWorker().stateProperty().addListener(
(o, oldState, newState) -> {
if (newState == Worker.State.SUCCEEDED) {
// ...
}
});
webEngine.load("https://www.luftlinie.org/"+ fromTextField.getText() +"/"+ toTextField.getText());
Важное замечание: Необходимо добавить прослушиватель loadWorker до загрузки страницы .
После успешного завершения загрузки работника вы можете безопасно получить доступ к документу WebEngine, который содержит загруженную страницу. Вы можете искать элемент с определенным идентификатором, используя удобный метод getElementById :
webEngine.getDocument().getElementById("some-page-specific-ID")
То, какую строку вы должны передать, будет зависеть от страницы. Вы должны изучить источник страницы и обнаружить id
элемента, содержимое которого вы хотите.
Если элемент не имеет атрибута id
, вам придется полагаться на документ структурируйте и используйте XPath , чтобы найти интересующий элемент HTML. Изучение использования XPath сделало бы этот ответ слишком большим, но вы можете узнать об этом самостоятельно, прочитав спецификацию . Чтение этого требует практического знания XML.
После того, как вы нашли элемент, извлечение информации из него будет зависеть от того, какой это элемент. Если это просто текст, вы можете использовать метод элемента getTextContent () .
Итак, весь код будет выглядеть примерно так:
webEngine.getLoadWorker().stateProperty().addListener(
(o, oldState, newState) -> {
if (newState == Worker.State.SUCCEEDED) {
Document doc = webEngine.getDocument();
Element element = doc.getElementById("some-page-specific-ID");
String value = element.getTextContent();
// Display value ...
}
});
webEngine.load("https://www.luftlinie.org/"+ fromTextField.getText() +"/"+ toTextField.getText());