package CatchTest;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CatchImage {
// 网页地址
private static final String URL = "http://www.4399.com/";
// 编码
private static final String ECODING = "UTF-8";
// 获取img标签正则
// private static final String IMGURL_REG = "<img.*src=(.*?)[^>]*?>";
private static final String IMGURL_REG = "<img\\b[^>]*\\bsrc\\b\\s*=\\s*('|\")?([^'\"\n\r\f>]+(\\.jpg|\\.bmp|\\.eps|\\.gif|\\.mif|\\.miff|\\.png|\\.tif|\\.tiff|\\.svg|\\.wmf|\\.jpe|\\.jpeg|\\.dib|\\.ico|\\.tga|\\.cut|\\.pic)\\b)[^>]*>";
// 获取src路径的正则
// private static final String IMGSRC_REG = "http:\"?(.*?)(\"|>|\\s+)";
private static final String IMGSRC_REG = "src\\s*=\\s*\"?(.*?)(\"|>|\\s+)";
public static void main(String[] args) throws Exception {
CatchImage cm = new CatchImage();
// 获取页面内容
String HTML = cm.getHTML(URL);
// 获取图片标签
List<String> imgUrl = cm.getImageUrl(HTML);
System.out.println(imgUrl);
// 获取图片src地址
List<String> imgSrc = cm.getImageSrc(imgUrl);
System.out.println(imgSrc);
// FOR (INT I = 0; I < IMGSRC.SIZE(); I++) {
// SYSTEM.OUT.PRINTLN("第" + I + "个图片");
// CM.OUTIMAGE(IMGSRC.GET(I));
// }
}
/**
* 读取文件并且保存到本地指定位置
*
* @throws Exception
*/
private void outImage(String url) throws Exception {
// new 一个URL对象
URL l = new URL(url);
// 打开链接
HttpURLConnection conn = (HttpURLConnection) l.openConnection();
// 设置请求方式
conn.setRequestMethod("GET");
// 超时响应为5秒
conn.setConnectTimeout(5 * 1000);
// 通过输入流获取图片信息
InputStream inputStream = conn.getInputStream();
// 把图片数据转换为二进制数据
byte[] data = readInputStram(inputStream);
// 创建一个文件类用于保存图片
File imageFile = new File("F:/image/"
+ UUID.randomUUID().toString().replace("-", "0")
.substring(0, 6) + ".png");
// 创建文件输出流
FileOutputStream outputStream = new FileOutputStream(imageFile);
// 写入数据
outputStream.write(data);
// 关闭输出流
outputStream.close();
}
/**
* 将读取到的内容写入缓存
*/
public static byte[] readInputStram(InputStream inputStream)
throws Exception {
// 创建一个byte类型的缓冲区
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// 创建一个Buffer字符串
byte[] buffer = new byte[1024];
int len = 0;
// 每次读取字符串的长度,如果为-1,代表全部读取完毕
while ((len = inputStream.read(buffer)) != -1) {
// 用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
outputStream.write(buffer, 0, len);
}
// 关闭输入流
inputStream.close();
// 把outStream里的数据写入内存
return outputStream.toByteArray();
}
/***
* 获取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(5,
matcher.group().length() - 1));
}
}
return listImgSrc;
}
}
分享到:
相关推荐
用来抓取网页上的 图片的超链接 你也可以适当修改 用来抓取其他连接
java爬虫,可以抓取网页中图片信息,适用与爬虫学习者
主要介绍了详解JAVA抓取网页的图片,JAVA利用正则表达式抓取网站图片,非常具有实用价值,需要的朋友可以参考下。
java的封装类,可以从指定网络地址,抓取地址中的网页,并分析抓取图片地址,下载到本地
java爬虫抓取网页内容,下载网站图片。抓取整个网站的图片,获取网页完整内容
网页图片抓取器,网页图片抓取工具,网页图片抓取
Java 网络爬虫实现网络抓取图片数据、流式布局、响应式布局、懒加载、动态切换加载技术
没有使用任何框架,纯java se编写的网站图片抓取程序,只真对某个网站的结构,但是代码可以用来学习java net相关知识。
javaWeb应用,需要布署在tomcat下 操作步骤: 1 解压GradImg.rar 2 把项目导入Eclipse 或 MyEclipse 进行编译 3 布署到tomcat下 4 启用应用输入...5 图片抓取后存放路径为:D:/img 需要先在D盘下创建img文件夹
动态抓取网页内容,生成word文件,包含具体demo和所需jar包
通过网页url地址生成jpg图片,解决了32、64位运行环境问题
经过测试,可以抓取一个完整的网站,包括网站的图片、css、js等。同时根据网站目录,在本地生成相同目录。使用Jsoup+Java。下载之后,可以直接运行。
改程序利用htmlParser这个jar包实现了对网页的解析,实现了对网址,网页的标题,网页上的图片,网页的内容的额入库操作。使用mySQL数据库。但是,在网页内容的提取方面还有很多的问题,毕竟各个网页的风格不一样,...
通过编写Java爬虫,我们可以从网页中提取有用的数据,如文本、图片、链接等,并将其存储或用于进一步的处理。Java爬虫的实现通常涉及以下几个关键步骤: 1. **发送请求**:使用Java的网络库向目标网页发送HTTP请求...
爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...
NULL 博文链接:https://ayx205.iteye.com/blog/1143937
主要介绍了Java实现的爬虫抓取图片并保存操作,涉及Java针对页面URL访问、获取、字符串匹配、文件下载等相关操作技巧,需要的朋友可以参考下
爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...
基于Java Swing开发的专业的网络数据采集/信息挖掘处理软件,通过灵活的配置,可以很轻松迅速地从 网页上抓取结构化的文本、图片、文件等资源信息,可编辑筛选处理后选择发布到网站
通过使用WebSpider蓝蜘蛛网页抓取,用户可以方便地提取网页内容,包括文本、图片、链接等,并将这些信息保存到本地或数据库中。此外,该工具还支持多种抓取策略,如深度优先、广度优先等,以满足不同用户的需求。...