从给定网页上下载img src= /格式的图片,并保存到制指定路径
从给定网页上下载<img src="" />格式的图片,并保存到制指定路径,适用于小批量的下载图片,大批量的建议还是用爬虫比较好。
作者的思路是:把整个HTML页面都存成字符串,用正则表达式把能与<img src="" />匹配的字符串找出来,掐头去尾找到图片的url,最后用URLConnection与网页建立连接把图片存下来。
小女发现这段代码中的getPicSrc的函数没有用,但为了保持转载的完整性就留了下来。
FROM:http://java.86mh.net/post/2012-04-30/19691910
package grabUrlImg;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 数据采集测试
*
* @author toby
*
*/
public class GrabImg {
/**
* 根据给定的url获取网页信息
*
* @param strUrl
* @return
*/
public String getHtml(String strUrl) {
BufferedReader br = null;
String result = "";
try {
// 初始化url
URL url = new URL(strUrl);
// 转为输入流
InputStreamReader isr = new InputStreamReader(url.openStream(),
"utf-8");
// 转为字符串
br = new BufferedReader(isr);
while (br.readLine() != null) {
result += br.readLine();
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 根据给定的网页根据正则获取img地址和扩展名
*
* @param pattern
* @param matcher
* @return
*/
public String getPicSrc(String pattern, String matcher) {
String res = "";
// 初始化正则
Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
// 正则匹配
Matcher m = p.matcher(matcher);
// 循环获取匹配字符
while (m.find()) {
// <img src="" />
String img = m.group();
res = img.substring(10, img.length() - 4) + "\t";
res += res.substring(res.lastIndexOf("."));
}
return res;
}
/**
* 给定url,获取图片地址和扩展名,并保存在指定文件夹
*
* @param strUrl
*/
public void getPic(String strUrl) {
// 获取网页
String matcher = getHtml(strUrl);
// 初始正则
String regImg = "<img src=\"\\S+\" />";
// 进行匹配
Pattern p = Pattern.compile(regImg, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(matcher);
String savePath = "d:/grabimg/";
File file = new File(savePath);
// 如果不存在文件夹就创建
if (!file.exists()) {
file.mkdirs();
}
// 循环保存
System.out.println("开始从网页抓取图片,请等待...");
int size = 0;
while (m.find()) {
String imgTag = m.group();
// 路径
String src = imgTag.substring(10, imgTag.length() - 4);
// 扩展名
String ext = src.substring(src.lastIndexOf("."));
// 保存图片
try {
URL url = new URL(src);
URLConnection conn = url.openConnection();
InputStream in = conn.getInputStream();
//BufferedInputStream in = new BufferedInputStream(url.openStream());
String saveName = UUID.randomUUID().toString();
File saveImg = new File(savePath + saveName + ext);
//BufferedOutputStream out = new BufferedOutputStream(
//new FileOutputStream(saveImg));
OutputStream out = new FileOutputStream(saveImg);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
size++;
}
System.out.println("共存储了" + size + "张图片!");
}
public static void main(String[] args) {
GrabImg grab = new GrabImg();
String strUrl = "http://www.csdn.net/"; //输入你想要copy的页面url
grab.getPic(strUrl);
}
}
从给定网页上下载img src= /格式的图片,并保存到制指定路径相关推荐
- 禁止用户从网页上下载图片
禁止用户从网页上下载图片 目前没找到什么好方法 document.oncontextmenu = () => false;//禁止右键 document.oncontextmenu = () = ...
- 实现在网页上下载文件
title: 实现在网页上下载文件 date: 2015-12-28 20:34:19 categories: UtilsClass_Resource tags: Utils xl_echo编辑整理, ...
- 从百度网页上下载歌曲,歌曲名称显示乱码
[DESCRIPTION] 从百度网页上下载歌曲,歌曲名称显示乱码 [SOLUTION] 该问题属于Baidu server返回的Content Disposition中使用GB2312的编码 但并没 ...
- [奇怪的小知识]从网页上下载内嵌的PDF、PPT文件(以Google浏览器为例)
[奇怪的小知识]从网页上下载内嵌的PDF.PPT文件(以Google浏览器为例) 1. 打开谷歌浏览器开发者工具 实操网址 2. 选中Network->Fetch/XHR 3. 刷新网页 刷新网 ...
- 如何从网页上下载Flash?
不知道大家是否遇到过,因为看到某个网页上精美的FLASH而苦于无法下载呢?不像图片之类的可以点右键,然后图片另存为就可以很顺利的保存下来.而在FLASH上点右键却保存不了,很是郁闷.现在就向大家介绍两 ...
- 通过超图在网页上加载obj格式3D模型
先看此文: https://blog.csdn.net/bcbobo21cn/article/details/109140958 在桌面版加载一个obj模型出来: 按目前的理解,只要在桌面版加载了模型 ...
- 请问asp.net网页里能显示tiff格式的图片吗?
我做的存取图片的程序,其它格式的图片都可以显示,可tiff格式的图片总是显示乱码,哪位高手给指点指点是怎么回事?谢谢! 转载于:https://www.cnblogs.com/support/arch ...
- 【转】从网页上下载控件时制作CAB包的方法
Internet 软件分发单位是"软件包",它由包含 .inf 文件或软件分发 (.osd) 文件(或两者都包括)的 CAB 文件 (.cab) 所组成.一个分发单位也可以包含软件 ...
- python高清大图代码_python2的代码从吉卜力网页上下载高清图片
python2 + 修改基础存储路径 + 给map里面添加源url和存储文件夹,k-v对. # -*- coding: utf-8 -*- import re import urllib import ...
最新文章
- 解决Debian-7.1下Chrome浏览器字体难看的问题
- malloc基本实现
- USACO 2.1 健康的好斯坦奶牛 (DFS)
- linux启动数据库orl,linux5.4下oracle问题
- linux 进程 控制终端,linux系统编程之进程(五):终端、作业控制与守护进程
- ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath、Server.MapPath的区别...
- 单例在多线程中的使用
- Oracle基于时间点的恢复(转载)
- 2个版本并存的python使用新的版本安装django的方法
- DeepFake技术--fakeapp, faceswap, deepfacelab等deepfakes换脸程序的简单对比
- iPhone界面学习(2)
- iapp如何导入本地源码,iapp导入源码使用教程
- linux mtd 命令,Linux MTD介绍
- U盘重装Win7系统教程
- socat 虚拟串口在 linux OS中如何实现?
- 偏态分布的均值与中位数关系
- 基尔霍夫电流/电压定律
- 互联网+时代的企业应用集成平台
- org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested exception
- 如何选择适合的短信通道