Этот дубликат , вероятно, является лучшим выбором. После загрузки страницы в WebView
используйте Transformer
, чтобы получить ее HTML. Затем используйте эту строку HTML в Jsoup
. Я не уверен, что вы получите ожидаемый результат.
import java.io.File;
import java.nio.file.Files;
import javafx.application.Application;
import javafx.concurrent.Worker;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.jsoup.Jsoup;
import org.w3c.dom.Document;
//import org.jsoup.nodes.Document;
public class App extends Application
{
org.jsoup.nodes.Document jsoupDocument;
@Override
public void start(Stage stage)
{
String url = "http://www.google.com";
WebView webview = new WebView();
final WebEngine webengine = webview.getEngine();
webengine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) ->
{
if (newState == Worker.State.SUCCEEDED) {
Document doc = webengine.getDocument();
try {
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
File file = new File("results.txt");
file.createNewFile();
StreamResult results = new StreamResult(file);
transformer.transform(new DOMSource(doc), results);
String fileContent = Files.readString(file.toPath());
jsoupDocument = Jsoup.parse(fileContent);
System.out.println(jsoupDocument.toString());
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
webengine.load("http://stackoverflow.com");
StackPane root = new StackPane(webview);
stage.setTitle("Hello Drag And Drop");
Scene scene = new Scene(root, 400, 200);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args)
{
Application.launch(args);
}
}