Ссылка на скачивание HtmlUnit от DIV - PullRequest
0 голосов
/ 02 декабря 2010

Я пытаюсь загрузить некоторые изображения с веб-сайта, и они хранятся в таблице под элементами 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-код вместо самих изображений.Я не знаю, как я могу получить атрибут href из элементов HtmlDivision, которые я получаю в "_divList".Есть предложения?

Спасибо

Edit1:

Это текущий код, который я использую для их загрузки, проблема с этим кодом заключается в том, что я загружаю некоторыеэлементы, которые мне не нужны (я загружаю все, что имеет "descarga.aspx" в href).Вот почему я хочу быть более конкретным и загружать только изображения.Как вы можете видеть, HtmlAnchors, которые я получаю при поиске «descarga.aspx», не перенаправляют меня на другую страницу:

    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());
    }

1 Ответ

0 голосов
/ 02 декабря 2010

Не могу сказать, не увидев весь сайт, но подозреваю, что это связано с нажатием на «imgcontainer», который содержит больше, чем изображение.Что происходит, когда вы вручную нажимаете на слова "Foto Frente Izquierda" в браузере?

Попробуйте нажать на изображение напрямую, используя getByXPath и что-то вроде "// div [@ class = 'imgitem'] / a"(вне головы) вместо getElementsByIdAndOrName.

...