【问题标题】:HtmlUnit download link from DIV来自 DIV 的 HtmlUnit 下载链接
【发布时间】:2010-12-02 10:34:47
【问题描述】:

我正在尝试从网站下载一些图像,它们存储在 div 元素下的表格中。我正在将 Java 与 HtmlUnit 库一起使用,这就是我目前所拥有的:

    _page = (HtmlPage) linkToPicsPage.click();

    List<HtmlElement> _divList = _page.getElementsByIdAndOrName("imgcontainer");

    int num = 0;
    for (HtmlElement el : _divList) {

        InputStream is = el.click().getWebResponse().getContentAsStream();
        File path = new File(_downloadPath+_car.getRegNumber());
        if (!path.exists())
            path.mkdir();
        writeToFile(is,new File(_downloadPath+_car.getRegNumber()+System.getProperty("file.separator")+_car.getRegNumber()+"["+num+"].jpg"));
        num++;
    }

网站代码如下:

<table id="ctl00_ContentPlaceContenido_GridImagenes" cellspacing="0" border="0" style="border-collapse:collapse;">
<tr>
<td>
    <div id="imgcontainer">
        <div class="imgitem">
            <a href="descarga.aspx?IDOWNER=40312&amp;ID=598477&amp;Action=View">
                <img alt="Foto Frente Izquierda" border="0" src="imgthumb.aspx?IDOWNER=40312&amp;ID=598477&amp;Action=View"/>
            </a>
            <br />
            Foto Frente Izquierda
        </div>
    </div>
</td><td>

但我正在下载的是一些 HTML 代码,而不是图像本身。我不知道如何从“_divList”中获得的 HtmlDivision 元素中获取 href 属性。有什么建议吗?

谢谢

编辑1:

这是我用来下载它们的当前代码,这个代码的问题是我正在下载一些我不需要的元素(我正在下载所有包含“descarga.aspx”的内容的href)。这就是为什么我想更具体,只下载图像。如您所见,我通过搜索“descarga.aspx”获得的 HtmlAnchors 并没有将我重定向到另一个页面:

    List<HtmlAnchor> picsLinks = new LinkedList<HtmlAnchor>();
    picsLinks = _page.getAnchors();
    int num = 0;
    for (HtmlAnchor currentPic : picsLinks) {
        if (currentPic.getHrefAttribute().contains("descarga.aspx")) {
            InputStream is = currentPic.click().getWebResponse().getContentAsStream();
            File path = new File(_downloadPath+_car.getRegNumber());
            if (!path.exists())
                path.mkdir();
            writeToFile(is,new File(_downloadPath+_car.getRegNumber()+System.getProperty("file.separator")+_car.getRegNumber()+"["+num+"].jpg"));
            _log.append("....Downloaded picture "+regNumber+num+".jpg\n");
            num++;
        }
        _log.setCaretPosition(_log.getDocument().getLength());
    }

【问题讨论】:

  • 你检查descarga.aspx直接返回图片,而不是重定向页面了吗?您应该确保使用 Firebug。
  • 是的,我已经编辑了问题并添加了旧代码,您可以在其中看到我自己获取 HtmlAnchors 时没有任何问题

标签: java html htmlunit


【解决方案1】:

我不能说没有看到整个网站,但我怀疑这与单击“imgcontainer”有关,其中包含的不仅仅是图像。当您在浏览器中手动单击“Foto Frente Izquierda”字样时会发生什么?

尝试直接点击图片,使用 getByXPath 和类似“//div[@class='imgitem']/a”(在我的脑海中)而不是 getElementsByIdAndOrName。

【讨论】:

    猜你喜欢
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    相关资源
    最近更新 更多