我正在尝试搜索特定页面上的所有图片代码。一个示例页面是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“”,但不是。我在这里做错了吗?
非常感谢任何帮助。
干杯!
答案 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像素图像。
希望这有帮助。