您的位置:首页 > 编程语言 > Java开发

需求(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();

        }


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: