2017-01-02 38 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代碼中導航(帶有功能檢查代碼chrome),它位於標籤'a'中,ID爲「link_FI」。但是運行上面的代碼,href標籤是空的。結果是這樣的:

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

但href不爲空。爲什麼??

回答

0

該網站稍後從服務器加載一些內容並修改您正在查詢的鏈接。如果你的web客戶端沒有執行所有的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