2017-01-02 5 views
0

Я хочу использовать htmlUnit, чтобы получить ссылку с веб-страницы.HtmlUnit - ошибка получения атрибута href

Вот мой код:

String url = "https://farmaci.agenziafarmaco.gov.it/bancadatifarmaci/farmaco?farmaco=012745"; 
     try { 
      java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF); 

      final WebClient webClient = new WebClient(); 
      WebClientOptions wco = webClient.getOptions(); 
      wco.setUseInsecureSSL(true); 
      final HtmlPage page = webClient.getPage(url); 

      final HtmlElement list = page.getHtmlElementById("link_FI"); 

     System.out.println(list.toString()); 
     }catch(Exception e){ 
      e.printStackTrace(); 

     } 

Я хочу, чтобы получить ссылку "Foglio illustrativo PDF". Перейдите в html-код (с функцией проверки кода хром) он находится внутри тега 'a' с id "link_FI". Но запустив код выше, тэг href пуст. Результатом является следующее:

HtmlAnchor[<a id="link_FI" href="#" title="Foglio Illustrativo">] 

но href не является пустым. Зачем??

ответ

0

Сайт загружает некоторое содержимое с сервера позже и изменяет запрашиваемую ссылку. Если ваш веб-клиент не выполняет все javascript, hrefs вполне может быть пустым.

Отключить javascript в браузере и загрузить страницу. Тег привязки вы смотрите выглядит следующим образом:

<div id="link_FI_div"> 
    <a id="link_FI" href="#" title="Foglio Illustrativo"> 
     <div style="display:inline-block;"> 
     <div style="display:inline-block;position:relative;top:8px;"> 
    </a> 
</div> 

Решая этот вопрос не так просто, я хотел бы предложить вам использовать полномасштабный браузер с поддержкой Javascript и захватить страницу с помощью этого. Кажется, что javafx.scene.web.WebView должен делать то, что вы хотите, он должен содержать надлежащую поддержку JavaScript и обертывать Webkit, но я никогда не использовал его.

То же самое касается HtmlUnit, он говорит, что он поддерживает потребности Javscript, которые вы должны искать, но я не могу предоставить вам пример. Сожалею.

+0

ОК спасибо, я понял причину. Как я могу это решить? – Fidelis

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