0

我有个问题。当我尝试使用 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 标签总是在那里。

4

1 回答 1

1

如果你查看真正的源代码,而不是 DOM 结构(例如,保存 HTML 页面并在记事本中打开它),你会看到那里没有 img 标签。它们都是通过 Javascript 动态填充的。

现在的问题是 Jsoup 并不意味着执行 Javascript,因此您只能在 Javascript 修改(填充图像)之前解析原始 DOM 结构。为了做你想做的事,你可以使用可以执行大部分 Javascript 的HTMLUnit 。

于 2013-04-23T13:18:33.710 回答