欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 下载指定网页的指定图片到本地电脑

程序员文章站 2022-04-15 19:11:04
Java 下载指定网页的全部图片到本地电脑Java 下载指定网页的全部图片到本地电脑1.功能需求2.实现分析3.获取网页源码并打印2.写一个测试 Demo3.调用 TinyMCE 组件渲染下该文本域4.效果演示5.源码地址Java 下载指定网页的全部图片到本地电脑系统:Win10JDK:1.8.0IDEA:2017.3.21.功能需求给一个指定网页链接,能够下载改网页上的全部图片到本地电脑的指定文件夹 - 例:https://www.veer.com/topic/913/2.实现分析1...

Java 下载指定网页的指定图片到本地电脑

系统:Win10
JDK:1.8.0_121
IDEA:2017.3.2

1.功能需求

给一个指定网页链接,能够下载该网页上的指定图片到本地电脑的指定文件夹 - 例:下面框出来的图片 https://www.veer.com/topic/913/
Java 下载指定网页的指定图片到本地电脑

2.实现分析

1.获取目标网页的源码
2.用正则匹配获取该网页内的所有 img 标签
3.提取需要的 img 标签的 src 属性
4.下载该 src 地址下的图片到本地

1):获取目标网页的源码,并打印出来

我们写一个获取该目标网页内容的方法

	// 获取html内容
	public static String getHTML(String targetUrl) throws Exception {
	    URL url = new URL(targetUrl);
	    URLConnection conn = url.openConnection();
	    conn.setRequestProperty("User-Agent", "Mozilla/5.0"); // 添加请求头
	    InputStream is = conn.getInputStream(); // 获取输入流
	    InputStreamReader isr = new InputStreamReader(is);
	    BufferedReader br = new BufferedReader(isr);
	    String line = null;
	    StringBuffer buffer = new StringBuffer();
	    while ((line = br.readLine()) != null) {
	        buffer.append(line);
	        buffer.append("\n");
	    }
	    br.close();
	    isr.close();
	    is.close();
	    return buffer.toString();
	}

并将内容打印到控制台查看

	public static void main(String[] args) throws Exception {
        String savePath = "images"; // 存储图片地址
        URL = "https://www.veer.com/topic/913/";
        String html = getHTML(URL);
        System.out.println(html);
    }

可以看到,该网页的源码已经打印出来了
Java 下载指定网页的指定图片到本地电脑

2):用正则匹配获取该网页内的所有 img 标签,并打印出来

接下来,我们需要写一个符合要求的 img 标签的正则表达式(根据自己的需求,我这里的匹配所有的)

	// 获取 img 标签的正则表达式
    private static final String ImgTag_REG = "<img.*?src=[\\\"|\\']?(.*?)[\\\"|\\']?\\s.*?>";
	// 匹配所有符合要求的 img 标签
    public static List<String> getImageTag(String html) {
        Matcher matcher= Pattern.compile(ImgTag_REG).matcher(html);
        List<String> listImgTag=new ArrayList<String>();
        while (matcher.find()){
            listImgTag.add(matcher.group());
        }
        return listImgTag;
    }

可以看到,匹配好的 img 标签已经打印出来了
Java 下载指定网页的指定图片到本地电脑

3):提取需要的 img 标签的 src 属性,并打印出来

接下来,写一个合适的 src 正则表达式,这里需要一点正则表达式的基础了,我这里匹配的是:包含