Htmlunit getByXPath не возвращает теги изображений - PullRequest
0 голосов
/ 07 февраля 2012

Я пытаюсь найти все теги изображений на определенной странице.Пример страницы может быть www.chapitre.com

Я использую следующий код для поиска всех изображений на странице:

HtmlPage page = HTMLParser.parseHtml(webResponse, webClient.openWindow(null,"testwindow"));
List<?> imageList = page.getByXPath("//img");
ListIterator li = imageList.listIterator();

while (li.hasNext() ) {
    HtmlImage image = (HtmlImage)li.next();
    URL url = new URL(image.getSrcAttribute());

    //For now, only load 1X1 pixels
    if (image.getHeightAttribute().equals("1") && image.getWidthAttribute().equals("1")) {
System.out.println("This is an image: " + url + " from page " + webRequest.getUrl() );
}

}

Это не 'Верните мне все теги изображений на странице.Например, тег изображения с атрибутами "src =" http://ace -lb.advertising.com / site = 703223 / mnum = 1516 / bins = 1 / rich = 0 / logs = 0 / betr = A2099 = [+] LP2"width =" 1 "height =" 1 "" должно быть захвачено, но это не так.Я что-то здесь не так делаю?

Любая помощь очень ценится.

Ура!

1 Ответ

0 голосов
/ 07 февраля 2012

Это потому, что

URL url = new URL(image.getSrcAttribute());

создает исключение:)

Попробуйте этот код:

public Main() throws Exception {
    WebClient webClient = new WebClient();
    webClient.setJavaScriptEnabled(false);
    HtmlPage page = webClient.getPage("http://www.chapitre.com");
    List<HtmlImage> imageList = (List<HtmlImage>) page.getByXPath("//img");
    for (HtmlImage image : imageList) {
        try {
            new URL(image.getSrcAttribute());
            if (image.getHeightAttribute().equals("1") && image.getWidthAttribute().equals("1")) {
                System.out.println(image.getSrcAttribute());
            }
        } catch (Exception e) {
            System.out.println("You didn't see this comming :)");
        }
    }
}

Вы даже можете получить эти пиксельные изображения 1x1 с помощью xpath.

Надеюсь, это поможет.

...