需求(Java);利用Jsoup架包获取指定网页的全部图片,并自动下载到指定文件夹中
2017-11-03 20:19
537 查看
看清标题,读懂需求,你就成功了一半了!跟往常文章一样,简单粗暴是我的风格,事多还得码代码,不多BB,直接上源码,慢慢读,结束相信你一点会很爽,有疑惑直接留言,我常在!
目标网页URL: http://www.qq.com/
保存地址: d:/img (自动生成img文件夹)
Java源码:
package cn.ouc.jsoup;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class jsoupByPicture {
public static void main(String[] args) throws IOException {
run("http://www.qq.com/","d:/img");
}
public static void run(String url,String filePath) {
Connection connect = Jsoup.connect(url);
try {
// 得到Document对象
Document document = connect.get();
// 查找所有img标签
Elements imgs = document.getElementsByTag("img");
System.out.println("共检测到下列图片URL:");
System.out.println("开始下载");
// 遍历img标签并获得src的属性
for (Element element : imgs) {
//获取每个img标签URL "abs:"表示绝对路径
String imgSrc = element.attr("abs:src");
// 打印URL
System.out.println(imgSrc);
//下载图片到本地
jsoupByPicture.downImages(filePath, imgSrc);
}
System.out.println("下载完成");
} catch (IOException e) {
e.printStackTrace();
}
}
private static void downImages(String filePath, String imgUrl) {
// TODO Auto-generated method stub
File fileDir=new File(filePath);//若存取文件夹没有,则先创建
if (!fileDir.exists()) {
fileDir.mkdirs();
}
//截取图片文件名
String fileName=imgUrl.substring(imgUrl.lastIndexOf('/')+1,imgUrl.length());
try {
// 文件名里面可能有中文或者空格,所以这里要进行处理。但空格又会被URLEncoder转义为加号
String urlTail = URLEncoder.encode(fileName, "UTF-8");
// 因此要将加号转化为UTF-8格式的%20
imgUrl = imgUrl.substring(0, imgUrl.lastIndexOf('/') + 1) + urlTail.replaceAll("\\+", "\\%20");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//写出路径
File file=new File(filePath+File.separator+fileName);
if(!file.exists())
try {
file.createNewFile();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
//获取图片URL
URL url=new URL(imgUrl);
//获得连接
URLConnection connection=url.openConnection();
//设置10秒的响应时间
connection.setConnectTimeout(10*1000);
//获得输入流
InputStream in=connection.getInputStream();
//获得输出流
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(file));
//构建缓冲区
byte[] buf=new byte[1024];
int size;
//写入到文件
while (-1!=(size=in.read(buf))) {
out.write(buf,0,size);
}
out.close();
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
目标网页URL: http://www.qq.com/
保存地址: d:/img (自动生成img文件夹)
Java源码:
package cn.ouc.jsoup;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class jsoupByPicture {
public static void main(String[] args) throws IOException {
run("http://www.qq.com/","d:/img");
}
public static void run(String url,String filePath) {
Connection connect = Jsoup.connect(url);
try {
// 得到Document对象
Document document = connect.get();
// 查找所有img标签
Elements imgs = document.getElementsByTag("img");
System.out.println("共检测到下列图片URL:");
System.out.println("开始下载");
// 遍历img标签并获得src的属性
for (Element element : imgs) {
//获取每个img标签URL "abs:"表示绝对路径
String imgSrc = element.attr("abs:src");
// 打印URL
System.out.println(imgSrc);
//下载图片到本地
jsoupByPicture.downImages(filePath, imgSrc);
}
System.out.println("下载完成");
} catch (IOException e) {
e.printStackTrace();
}
}
private static void downImages(String filePath, String imgUrl) {
// TODO Auto-generated method stub
File fileDir=new File(filePath);//若存取文件夹没有,则先创建
if (!fileDir.exists()) {
fileDir.mkdirs();
}
//截取图片文件名
String fileName=imgUrl.substring(imgUrl.lastIndexOf('/')+1,imgUrl.length());
try {
// 文件名里面可能有中文或者空格,所以这里要进行处理。但空格又会被URLEncoder转义为加号
String urlTail = URLEncoder.encode(fileName, "UTF-8");
// 因此要将加号转化为UTF-8格式的%20
imgUrl = imgUrl.substring(0, imgUrl.lastIndexOf('/') + 1) + urlTail.replaceAll("\\+", "\\%20");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//写出路径
File file=new File(filePath+File.separator+fileName);
if(!file.exists())
try {
file.createNewFile();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
//获取图片URL
URL url=new URL(imgUrl);
//获得连接
URLConnection connection=url.openConnection();
//设置10秒的响应时间
connection.setConnectTimeout(10*1000);
//获得输入流
InputStream in=connection.getInputStream();
//获得输出流
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(file));
//构建缓冲区
byte[] buf=new byte[1024];
int size;
//写入到文件
while (-1!=(size=in.read(buf))) {
out.write(buf,0,size);
}
out.close();
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
相关文章推荐
- 需求(Java语言实现):对存有图片URL的txt文件进行逐行读取,自行下载txt文件中的图片到指定文件夹中
- android 图片获取策略,下载并保存至指定文件夹
- Java 利用 svnKit 操作SVN 【获取所有文件夹、添加文件、文件下载】
- 利用curl自动获取并下载网页的方法
- 自动下载网页中图片到服务器指定位置
- Py之Crawler:爬虫利用随机选取代理访问服务器的方法实现下载某网址上所有的图片到指定文件夹——Jason niu
- 获取网页--爬取网页的图片存放在不同的文件夹中--下载图片--requests/lxml(etree)/os
- 利用模板将指定目录下的所有图片自动生成含多个分页的图片静态网页
- JAVA遍历指定文件夹路径,返回全部JPG图片路径
- 从指定网页自动下载其中所有的图片
- 利用javascript和canvas获取UIWebView网页里的图片(不用再下载)
- 用Java到指定地址下载东西放到指定文件夹下
- [Java] 利用xpdf库获取pdf文件的指定范围文本内容
- Java 抓取网页内容,获取指定服务器IP
- java获取http:图片下载代码——android基础编
- java中获取指定文件夹下所有文件名
- java获取http:图片下载代码——android基础编
- 用正则表达式自动下载网页中的图片
- [Java] 利用xpdf库获取pdf文件的指定范围文本内容
- [Java] 利用xpdf库获取pdf文件的指定范围文本内容