2016-05-20 3 views
2

Я пытаюсь получить wysiwyg html-контент с веб-страницы (сгенерированный с помощью калитки apache, но я не думаю, что это волнует). Я попытался решения описанной here, но я всегда получаю HTML тело, как тот, который следует:Получение чистого содержимого html с веб-страницы

<body> 
    <div 
    style="width: 830px; height: 300px; margin: auto; margin-top: 50px;"> 
     <div wicket:id="rangeBar" 
     style="float: left; width: 400px; height: 300px; margin-right: 30px;" 
     id="rangeBar1"></div> 
    </div> 
</body> 

Я ожидал, чтобы получить данные, аналогичные тому, который я вижу в веб-консоли браузера, как:

<body> 
    <div style="width: 830px; height: 300px; margin: auto; margin-top: 50px;"> 
     <div wicket:id="rangeBar" style="float: left; width: 400px; height: 300px; margin-right: 30px;" id="rangeBar1" class="shield-chart"> 
      <div id="shielddw" class="shield-container" style="position: relative; overflow: hidden; width: 400px; height: 300px; line-height: normal; z-index: 0; font-family: &amp; amp; #39; Segoe UI&amp;amp; #39; , Tahoma , Verdana, sans-serif; font-size: 12px;"> 
       <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="400" height="300"> 
        <defs> 
        <clippath id="shielddx"> 
        <rect rx="0" ry="0" fill="none" x="0" y="0" width="9999" height="300" stroke-width="0.000001"></rect></clippath> 
        <clippath id="shielddy"> 
        <rect fill="none" x="0" y="0" width="331" height="210"></rect></clippath> 
        <filter id="a5a87bf2-0ea3-4664-8ceb-bd50b883a117" height="120%"> 
        <fegaussianblur in="SourceAlpha" stdDeviation="3"></fegaussianblur> 
        <fecomponenttransfer> 
        <fefunca type="linear" slope="0.2"></fefunca></fecomponenttransfer> 
        <femerge> 
        <femergenode></femergenode> 
        <femergenode in="SourceGraphic"></femergenode></femerge></filter></defs> 
        <rect rx="0" ry="0" fill="#2D2D2D" x="0" y="0" width="400" 
        height="300" stroke-width="0.000001"></rect> 
         ..... 
       </svg> 
      </div> 
      <div class="shield-tooltip" style="pointer-events: none"></div> 
     </div> 
    </div> 
</body> 

Есть ли способ получить такой контент в java?

Спасибо, Лаура

UPDATE: Вот мой код Java

HttpClientBuilder builder = HttpClientBuilder.create(); 
CloseableHttpClient httpclient = builder.build(); 
HttpGet httpget = new HttpGet(TEST_WEB_PAGE); 
HttpResponse response = httpclient.execute(httpget); 
InputStream content = response.getEntity().getContent(); 
OutputStream htmlStream = null; 
File htmlFile = new File(ROOT + "etc/html/demo_apache_" + new Date() + ".html"); 
try { 
    htmlStream = new FileOutputStream(htmlFile); 
    byte[] buffer = new byte[8 * 1024]; 
    int bytesRead; 
    while ((bytesRead = content.read(buffer)) != -1) { 
     htmlStream.write(buffer, 0, bytesRead); 
    } 
} finally { 
    if (htmlStream != null) 
     htmlStream.close(); 
} 
+0

Укажите, пожалуйста, код Java, который вы используете для извлечения данных. – Emil

+0

Вопрос обновлен кодом Java – Laura

ответ

3

Есть ли какой-либо JavaScript включен в голову тег, который может быть заполнение DIV после загрузки страницы?

Если вы получаете страницу программно с помощью Java, этот JavaScript не будет выполнен.

+0

Да, заголовок содержит код javascript :( – Laura

+0

Я не знаком с настройкой вашего проекта, но, возможно, вы можете сделать страницу внутри веб-элемента управления программным путем, а затем вытащить исходный код из него –

+0

Как это сделать? – Laura

Смежные вопросы