详解JAVA抓取网页的图片,JAVA利用正则表达式抓取网站图片
发布时间 - 2026-01-10 21:56:35 点击率:次利用Java抓取网页上的所有图片:

用两个正则表达式:
1、匹配html中img标签的正则:<img.*src=(.*?)[^>]*?>
2、匹配img标签中得src中http路径的正则:http:\"?(.*?)(\"|>|\\s+)
实现:
package org.swinglife.main;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/***
* java抓取网络图片
* @author swinglife
*
*/
public class CatchImage {
// 地址
private static final String URL = "http://www.csdn.net";
// 编码
private static final String ECODING = "UTF-8";
// 获取img标签正则
private static final String IMGURL_REG = "<img.*src=(.*?)[^>]*?>";
// 获取src路径的正则
private static final String IMGSRC_REG = "http:\"?(.*?)(\"|>|\\s+)";
public static void main(String[] args) throws Exception {
CatchImage cm = new CatchImage();
//获得html文本内容
String HTML = cm.getHTML(URL);
//获取图片标签
List<String> imgUrl = cm.getImageUrl(HTML);
//获取图片src地址
List<String> imgSrc = cm.getImageSrc(imgUrl);
//下载图片
cm.Download(imgSrc);
}
/***
* 获取HTML内容
*
* @param url
* @return
* @throws Exception
*/
private String getHTML(String url) throws Exception {
URL uri = new URL(url);
URLConnection connection = uri.openConnection();
InputStream in = connection.getInputStream();
byte[] buf = new byte[1024];
int length = 0;
StringBuffer sb = new StringBuffer();
while ((length = in.read(buf, 0, buf.length)) > 0) {
sb.append(new String(buf, ECODING));
}
in.close();
return sb.toString();
}
/***
* 获取ImageUrl地址
*
* @param HTML
* @return
*/
private List<String> getImageUrl(String HTML) {
Matcher matcher = Pattern.compile(IMGURL_REG).matcher(HTML);
List<String> listImgUrl = new ArrayList<String>();
while (matcher.find()) {
listImgUrl.add(matcher.group());
}
return listImgUrl;
}
/***
* 获取ImageSrc地址
*
* @param listImageUrl
* @return
*/
private List<String> getImageSrc(List<String> listImageUrl) {
List<String> listImgSrc = new ArrayList<String>();
for (String image : listImageUrl) {
Matcher matcher = Pattern.compile(IMGSRC_REG).matcher(image);
while (matcher.find()) {
listImgSrc.add(matcher.group().substring(0, matcher.group().length() - 1));
}
}
return listImgSrc;
}
/***
* 下载图片
*
* @param listImgSrc
*/
private void Download(List<String> listImgSrc) {
try {
for (String url : listImgSrc) {
String imageName = url.substring(url.lastIndexOf("/") + 1, url.length());
URL uri = new URL(url);
InputStream in = uri.openStream();
FileOutputStream fo = new FileOutputStream(new File(imageName));
byte[] buf = new byte[1024];
int length = 0;
System.out.println("开始下载:" + url);
while ((length = in.read(buf, 0, buf.length)) != -1) {
fo.write(buf, 0, length);
}
in.close();
fo.close();
System.out.println(imageName + "下载完成");
}
} catch (Exception e) {
System.out.println("下载失败");
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java抓取网页图片
# JAVA正则抓取图片
# java
# 抓取图片
# JavaWeb项目打开网页出现Session Error的异常解决方案
# java通过Jsoup爬取网页过程详解
# 详解java实现简单扫码登录功能(模仿微信网页版扫码)
# java调用微信接口实现网页分享小功能
# Java实现微信网页授权的示例代码
# Java实现的简单网页截屏功能示例
# java利用url实现网页内容的抓取
# Java导出网页表格Excel过程详解
# 下载图片
# 大家多多
# 中得
# 下载完成
# 正则表达式
# regex
# List
# Matcher
# ArrayList
# Pattern
# InputStream
# URL
# net
# URLConnection
# FileOutputStream
# util
# www
# String
# final
# UTF
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
jQuery 常见小例汇总
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
如何在Windows虚拟主机上快速搭建网站?
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
昵图网官网入口 昵图网素材平台官方入口
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Laravel Docker环境搭建教程_Laravel Sail使用指南
昵图网官方站入口 昵图网素材图库官网入口
如何为不同团队 ID 动态生成多个独立按钮
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
如何快速完成中国万网建站详细流程?
如何在阿里云高效完成企业建站全流程?
简历在线制作网站免费版,如何创建个人简历?
微信h5制作网站有哪些,免费微信H5页面制作工具?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何快速搭建安全的FTP站点?
canvas 画布在主流浏览器中的尺寸限制详细介绍
Android Socket接口实现即时通讯实例代码
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
高性能网站服务器配置指南:安全稳定与高效建站核心方案
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
如何为不同团队 ID 动态生成多个非值班状态按钮
如何实现javascript表单验证_正则表达式有哪些实用技巧
JavaScript Ajax实现异步通信
微信小程序制作网站有哪些,微信小程序需要做网站吗?
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
如何用美橙互联一键搭建多站合一网站?
如何用花生壳三步快速搭建专属网站?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
MySQL查询结果复制到新表的方法(更新、插入)
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
手机网站制作与建设方案,手机网站如何建设?
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
js代码实现下拉菜单【推荐】
微信小程序 scroll-view组件实现列表页实例代码
Internet Explorer官网直接进入 IE浏览器在线体验版网址
晋江文学城电脑版官网 晋江文学城网页版直接进入
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
如何用好域名打造高点击率的自主建站?
如何在阿里云服务器自主搭建网站?
香港服务器WordPress建站指南:SEO优化与高效部署策略
Laravel怎么连接多个数据库_Laravel多数据库连接配置
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
Laravel模型事件有哪些_Laravel Model Event生命周期详解
如何在景安服务器上快速搭建个人网站?

