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 下载指定网页的指定图片到本地电脑
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 正则表达式,这里需要一点正则表达式的基础了,我这里匹配的是:包含