Моя цель - использовать Java для анализа страниц списков Airbnb, таких как эта: https://www.airbnb.com/rooms/28149735
Сначала я попытался с помощью JSoup сделать следующее:
String html = Jsoup.connect(webPage).get().html();
Однако это не такработать, так как он не может загрузить сценарии страницы и не отображает то, что я вижу, когда проверяю загруженную страницу из браузера, такого как Chrome или Firefox.
Так что я сейчас пытаюсь использовать WebKit сследующий код:
// get the instance of the webkit
BrowserEngine browser = BrowserFactory.getWebKit();
Page page = browser.navigate("https://www.airbnb.com/rooms/28149735");
page.show();
String html = page.getDocument().getBody().getInnerHTML();
Но это тоже не работает: страница загружается правильно (я вижу это с журналами в консоли, и всплывающее окно отображается правильно), но затем, когда у меня есть загруженная страница,Я не могу получить доступ к html (я получаю исключение нулевого указателя, см. Ниже журнал ошибок).
Когда я запускаю код в режиме отладки, я смотрю на объект страницы, и документ на этой странице показываеткак "ноль", что, кажется, создает ошибку.
Итак, мой вопрос: что я делаю не так и как я могу получить HTML-код загруженной страницы?
Заранее большое спасибо!
PS: Вот ошибка:
Exception in thread "JavaFX Application Thread" io.webfolder.ui4j.api.util.Ui4jException: java.lang.NullPointerException
at io.webfolder.ui4j.webkit.aspect.WebKitAspect$CallableExecutor.run(WebKitAspect.java:41)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run$$$capture(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$null$48(GtkApplication.java:139)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at io.webfolder.ui4j.webkit.dom.WebKitDocument.getBody_aroundBody12(WebKitDocument.java:74)
at io.webfolder.ui4j.webkit.dom.WebKitDocument$AjcClosure13.run(WebKitDocument.java:1)
at io.webfolder.ui4j.internal.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)
at io.webfolder.ui4j.webkit.aspect.WebKitAspect$CallableExecutor.run(WebKitAspect.java:39)
... 8 more