/ / जावास्क्रिप्ट का उपयोग करके जावास्क्रिप्ट आधारित डायनामिक सामग्री - जावा, जावास्क्रिप्ट, एचटीएमएलिट

HTMLUnit - जावा, जावास्क्रिप्ट, htmlunit का उपयोग कर जावास्क्रिप्ट आधारित गतिशील सामग्री

मैं जावास्क्रिप्ट आधारित होने में फंस गया हूंHtmlUnit का उपयोग कर गतिशील सामग्री। मैं पृष्ठ से (साइनइन, पंजीकरण एचटीएमएल सामग्री) प्राप्त करने की उम्मीद कर रहा हूं। निम्नलिखित कोड के साथ, मुझे केवल स्थिर सामग्री मिलती है।

मैं HtmlUnit में नया हूं। किसी भी तरह की सहायता की हम सराहना करेंगे।

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);

उत्तर:

उत्तर № 1 के लिए 4

दो बिंदु:

  1. आपको पृष्ठ को प्राप्त करने के बाद संकेत के रूप में, WaitForBackgroundJavaScript () की आवश्यकता है यहाँ
  2. आपको इसके बजाय myPage.asText () या .asXml () का उपयोग करना चाहिए, क्योंकि getWebResponse () जावास्क्रिप्ट निष्पादन के बिना मूल सामग्री देता है।

    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);
    }