Htmlunit getByXPath不返回图像标签

时间:2012-02-07 19:28:11

标签: java htmlunit

我正在尝试搜索特定页面上的所有图片代码。一个示例页面是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 :(得分:0)

那是因为

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 :)");
        }
    }
}

您甚至可以通过xpath获取这些1x1像素图像。

希望这有帮助。