2012-02-07 63 views
0

我想搜索特定頁面上的所有圖像標籤。一個例子頁面是www.chapitre.comHtmlunit getByXPath不返回圖像標籤

我使用下面的代碼來搜索網頁上的所有圖片:

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「」,但不是。我在這裏做錯了什麼?

任何幫助真的很感激。

乾杯!

回答

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像素的圖像。

希望這會有所幫助。

+0

非常感謝!你真棒! – 2012-02-07 23:24:02