我正在尝试从网站下载一些图像,它们存储在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&ID=598477&Action=View">
<img alt="Foto Frente Izquierda" border="0" src="imgthumb.aspx?IDOWNER=40312&ID=598477&Action=View"/>
</a>
<br />
Foto Frente Izquierda
</div>
</div>
</td><td>
但是我正在下载的是一些HTML代码而不是图像本身。我不知道如何从“_divList”中获得的HtmlDivision元素中获取href属性。有什么建议吗?
由于
EDIT1:
这是我用来下载它们的当前代码,这段代码的问题是我正在下载一些我不需要的元素(我正在下载所有“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());
}
答案 0 :(得分:0)
我不能说没有看到整个网站,但我怀疑它与点击“imgcontainer”有关,其中包含的不仅仅是图像。当您在浏览器中手动点击“Foto Frente Izquierda”时会发生什么?
尝试直接点击图片,使用getByXPath和类似“// div [@ class ='imgitem'] / a”(在我的头顶)而不是getElementsByIdAndOrName。