利用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
相关文章:
建站之星后台密码遗忘或太弱?如何重置与强化?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
代刷网站制作软件,别人代刷火车票靠谱吗?
建站之星安装提示数据库无法连接如何解决?
如何在IIS7中新建站点?详细步骤解析
微信小程序 input输入框控件详解及实例(多种示例)
建站之星代理平台如何选择最佳方案?
如何通过网站建站时间优化SEO与用户体验?
制作农业网站的软件,比较好的农业网站推荐一下?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何在云服务器上快速搭建个人网站?
家庭建站与云服务器建站,如何选择更优?
宝塔建站无法访问?如何排查配置与端口问题?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
建站主机如何安装配置?新手必看操作指南
高端网站建设与定制开发一站式解决方案 中企动力
如何在宝塔面板中修改默认建站目录?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何快速生成凡客建站的专业级图册?
如何用腾讯建站主机快速创建免费网站?
SQL查询语句优化的实用方法总结
网站制作难吗安全吗,做一个网站需要多久时间?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
广州营销型建站服务商推荐:技术优势与SEO优化解析
山东云建站价格为何差异显著?
常州企业建站如何选择最佳模板?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
建站168自助建站系统:快速模板定制与SEO优化指南
桂林网站制作公司有哪些,桂林马拉松怎么报名?
C#如何序列化对象为XML XmlSerializer用法
建站之星CMS建站配置指南:模板选择与SEO优化技巧
C#怎么创建控制台应用 C# Console App项目创建方法
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
宝塔建站助手安装配置与建站模板使用全流程解析
如何快速配置高效服务器建站软件?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
网站制作企业,网站的banner和导航栏是指什么?
家庭服务器如何搭建个人网站?
建站之星如何通过成品分离优化网站效率?
北京制作网站的公司,北京铁路集团官方网站?
宝塔面板创建网站无法访问?如何快速排查修复?
北京专业网站制作设计师招聘,北京白云观官方网站?
C++中引用和指针有什么区别?(代码说明)
Android使用GridView实现日历的简单功能
*请认真填写需求信息,我们会在24小时内与您取得联系。