我有一个问题。当我尝试使用Java中的Jsoup从网页获取图像时。 这是代码:
String link = "http://truyentranhtuan.com/detective-conan/856/doc-truyen/";
Document docs = Jsoup.connect(link).timeout(60000).get();
Elements comics = docs.select("#hienthitruyen img");
System.out.println(comics.size());
for (Element comic : comics) {
int i = 0;
System.out.println(comic);
String linkImage = comic.attr("src");
if (!"".equals(linkImage)) {
URL url = new URL(linkImage);
BufferedImage image = ImageIO.read(url);
ImageIO.write(image, "jpg", new File(i + ".jpg"));
i++;
}
}
问题是我无法在此网页中获得任何img标记。 Elements的大小始终为零。 但是当我在这个网页上查看源码时,img标签总是在那里。
答案 0 :(得分:1)
如果你看一下真正的源代码,而不是DOM结构(例如,保存HTML页面并在记事本中打开它),你会发现那里没有img标签。它们都是通过Javascript动态填充的。
现在的问题是Jsoup并不意味着执行Javascript,因此在Javascript修改(填充图像)之前,你只能解析原始的DOM结构。 要做你想做的事,你可以使用HTMLUnit来执行大部分的Javascript。