J'ai été bloqué pour obtenir JavaScript basécontenu dynamique utilisant HtmlUnit. Je m'attends à obtenir (connexion, contenu HTML d'inscription) de la page. Avec le code suivant, je ne récupère que le contenu statique.
Je suis nouveau sur HtmlUnit. Toute aide sera grandement appréciée.
String strURL = "https://www.checkmytrip.com" ;
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_31);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getCookieManager().setCookiesEnabled(true);
webClient.waitForBackgroundJavaScript(60 * 1000);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
HtmlPage myPage = ((HtmlPage) webClient.getPage(strURL));
String theContent = myPage.getWebResponse().getContentAsString();
System.out.println(theContent);
Réponses:
4 pour la réponse № 1Deux points:
- Vous devez attendreForBackgroundJavaScript () après avoir obtenu la page, comme indiqué ici
Vous devez plutôt utiliser myPage.asText () ou .asXml (), car getWebResponse () renvoie le contenu d'origine sans exécution de JavaScript.
String strURL = "https://www.checkmytrip.com" ; java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF); java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF); try (final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_31)) { webClient.setAjaxController(new NicelyResynchronizingAjaxController()); HtmlPage myPage = ((HtmlPage) webClient.getPage(strURL)); webClient.waitForBackgroundJavaScript(10 * 1000); String theContent = myPage.asXml(); System.out.println(theContent); }