Получите Html контент с тегом тела, заполненным Jsoup, с помощью кода javascript - PullRequest
0 голосов
/ 20 февраля 2020

Привет. Я пытаюсь получить html данных. Но я просто получаю JAVASCRIPTS Как я могу получить html контент. Я не понимаю этот сценарий. Я пытаюсь htmlunit ждать javascript загрузки кода. но я не мог этого сделать.

Также я пробую slenium и junit: https://www.sahibinden.com/ilan/emlak-is-yeri-kiralik-cumhuriyet-caddesinde-550m-kiralik-bina-792916998/detay

, но я не смог получить какие-либо данные, как я могу это сделать доступ?

<body> 
  <script>(function(K){var W={},D={};var k(document.createEvent("CustomEvent")))</script> 
  <script>
    (function() {
      'use strict';
      var afterReadyCbCalled = false;
      var originalHeaders = ["Accept", "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2","X-Origin-DC", "gytp","X-Forwarded-Proto", "https","X-Forwarded-For", "212.156.131.82","X-TLS-Version", "771","X-Client-SrcPort", "51979",];
      var originalBody = "";
      function afterReadyCb() {
        if (afterReadyCbCalled) return;
        afterReadyCbCalled = true;
        var xhr = new XMLHttpRequest();
        xhr.onload = function() {
          var isValid = xhr.getResponseHeader("ISTL-INFINITE-LOOP");
          if (isValid != null && isValid != '') return;
          var a = xhr.getResponseHeader("ISTL-REDIRECT-TO");
          if (a != null && a != '') {
            location.replace(a);
          } else {
            if (window.history != null && typeof history.replaceState === 'function') {
              var responseURL = xhr.responseURL != null ? xhr.responseURL : xhr.getResponseHeader("ISTL-RESPONSE-URL");
              if (responseURL != null && responseURL != '') {
                history.replaceState(null, '', responseURL);
              }
            }
            window.location.reload();
          }
        };
        xhr.open("get", location.href, true);
        for (var i = 0; i < originalHeaders.length; i += 2) {
          var headerName = originalHeaders[i];
          try {
            xhr.setRequestHeader(headerName, originalHeaders[i + 1]);
          } catch (e) {}
        }
        xhr.setRequestHeader("ISTL-INFINITE-LOOP", '1');
        xhr.send(originalBody);
        var evt = document.createEvent('Event');
        evt.initEvent('QLpZFJdHv', true, true);
        dispatchEvent(evt);
      }
      addEventListener('afterReady', afterReadyCb, false);
      setTimeout(afterReadyCb, 400);
    }());
  </script> 
  <style>
    html, body {
      margin: 0;
      padding: 0;
      background-color: white;
}
.preloader {
width: 100%;
height: 100%;
position: absolute;
left:0;
right:0;
top:0;
bottom:0;
background-image: qcQ==');
background-repeat: no-repeat;
background-position: center center;
z-index: 1;
}
</style> 
  <div class="preloader"></div> 
  <style> body { background: white;
    }
  </style>   
 </body>

1 Ответ

0 голосов
/ 22 февраля 2020

Этот код выполняет работу здесь.

String url = "https://www.sahibinden.com/ilan/emlak-is-yeri-kiralik-cumhuriyet-caddesinde-550m-kiralik-bina-792916998/detay";

try (final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_68)) {
    webClient.getOptions().setThrowExceptionOnScriptError(false);

    HtmlPage page = webClient.getPage(url);
    webClient.waitForBackgroundJavaScript(10_000);

    System.out.println(page.asText());
    System.out.println(" ----------------------------------- ");
    System.out.println(page.asXml());
}

Что вам не хватает?

...