【问题标题】:Java: How to extract the links to images in a HTML file using Jsoup library for JavaJava:如何使用 Java 的 Jsoup 库提取 HTML 文件中图像的链接
【发布时间】:2012-09-24 22:20:20
【问题描述】:

我有一个 HTML 文件,我想使用 Jsoup 读取它并将结果导出到 Excel 工作表。在这个过程中,我想提取 HTML 文件中存在的所有图像的链接(src)。

这是我曾经做过同样操作的代码 sn-p:

File myhtml = new File("D:\\Projects\\Java\\report.html");
            //get the string from the file myhtml
            String str = getFileString(myhtml);

            //getting the links to the images as in the html file
            Document doc = Jsoup.parseBodyFragment(str);
            Elements media = doc.select("[src]");

            //System.out.println(media.size());
            for(Element imageLink:media)
            {

                if(imageLink.tagName().equals("img"))
                    //storing the local link to image as global variable in imlink
                    P1.imlink = imageLink.attr("src").toString();
System.out.println(P1.imlink);
            }

        }

我想要链接的 HTML 文件中有两个图像。但是,我编写的代码仅显示文件中存在的第一个图像的链接。请帮我找出我的代码中的错误!

【问题讨论】:

    标签: java image jsoup


    【解决方案1】:

    在这里试试这个:

    File f = new File("D:\\Projects\\Java\\report.html");
    
    Document doc = Jsoup.parse(f, null, ""); // set proper Charset (2nd param) and BaseUri (3rd param) here
    Elements elements = doc.select("img[src]");
    
    for( Element element : elements )
    {
        // Do something with your links here ...
        System.out.println(element.attr("src"));
    }
    

    顺便说一句。也许您的问题是将链接存储到全局变量中的部分。每次运行循环时都会覆盖它。更好的解决方案是将链接存储到列表中或在第一次点击后离开循环。

    【讨论】:

      【解决方案2】:
        //Dom ex............
      
        import org.w3c.tidy.*;
      
        import java.io.*;
      
        import java.net.*;
      
        import org.w3c.dom.*;
      
        import java.util.*;
      
        public class demo
      
        {
      
        public static void main(String arg[])
      
        {
      
        try
      
        {
      
        InputStream input = new URL("http://www.southreels.com").openStream();
      
        Document document = new Tidy().parseDOM(input, null);
      
        NodeList imgs = document.getElementsByTagName("img");
      
        List<String> srcs = new ArrayList<String>();
      
        for (int i = 0; i < imgs.getLength(); i++) {
      
        srcs.add(imgs.item(i).getAttributes().getNamedItem("src").getNodeValue());
      
        }
      
        int i=0;
      
        for (String src: srcs) {
      
        System.out.println(i+"  "+src);
      
        i++;
      
        String file =System.getProperty("user.dir")+System.getProperty("file.separator");
      
        URL server = new URL(src);
      
        HttpURLConnection connection = (HttpURLConnection)server.openConnection();
      
        InputStream is = connection.getInputStream();
      
         OutputStream os = new FileOutputStream(file+"demo"+i+".jpg");
      
         byte[] buffer = new byte[1024];
      
        int byteReaded = is.read(buffer);
      
        while(byteReaded != -1)
      
        {
      
        os.write(buffer,0,byteReaded);
      
        byteReaded = is.read(buffer);
      
        }
      
         os.close();
      
        }
      
        }
      
         catch(Exception e)
      
        {
      
        }
      
        }
      
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 1970-01-01
        • 1970-01-01
        • 2019-07-15
        • 1970-01-01
        • 2016-12-16
        • 1970-01-01
        相关资源
        最近更新 更多