繁体   English   中英

HtmlUnit从DIV下载链接

[英]HtmlUnit download link from DIV

我正在尝试从网站下载一些图像,它们存储在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:

这是我用来下载它们的当前代码,此代码的问题是我正在下载一些不需要的元素(我正在下载href中包含“ descarga.aspx”的所有内容) 。 这就是为什么我想更具体,只下载图像。 如您所见,我通过搜索“ 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());
    }

我不能不看整个网站就说,但是我怀疑这与单击“ imgcontainer”有关,该“ imgcontainer”包含的图像比图像还多。 在浏览器中手动单击“ Foto Frente Izquierda”一词时会发生什么?

尝试使用getByXPath和类似“ // div [@ class ='imgitem'] / a”(不在我头顶)而不是getElementsByIdAndOrName的方法直接单击图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM