当前位置: 移动技术网 > IT编程>开发语言>Java > Java 下载指定网页的指定图片到本地电脑

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

2020年07月18日  | 移动技术网IT编程  | 我要评论

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

系统:Win10
JDK:1.8.0_121
IDEA:2017.3.2

1.功能需求

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

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);
    }

可以看到,该网页的源码已经打印出来了
在这里插入图片描述

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 标签已经打印出来了
在这里插入图片描述

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

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网