HtmlUnit - 获取href属性时出错

时间:2017-01-02 22:43:51

标签: java htmlunit

我想使用htmlUnit从网页获取链接。

这是我的代码:

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不是空的。为什么?

1 个答案:

答案 0 :(得分:0)

网站稍后会从服务器加载一些内容并修改您要查询的链接。如果您的Web客户端没有执行所有的javascript,则href可能很空。

在浏览器中禁用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需求,但我不能为你提供一个例子。遗憾。