java 爬虫 图片_web爬虫下载图片(Java实现)

packagecom.dorra.jsoup;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.net.HttpURLConnection;importjava.net.URL;importjava.net.URLConnection;importjava.util.Scanner;importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;importorg.jsoup.nodes.Element;importorg.jsoup.select.Elements;/*** 通过HTML解析实现图片批量下载

*@authorDorraChen

*@versionv1.0

* @date 2017年10月22日 上午11:36:55*/

public classHtmlJsoup {/*** 第一步:获取页面的源代码;

* 第二步:解析源代码,含有图片的标签,再找到图片标签里面的src;

* 第三步:利用Java里面的net包,网络编程

**/

/*** 根据网页和编码获取网页内容和源代码

*@paramurl

*@paramencoding*/

public staticString getHtmlResourceByUrl(String url,String encoding){

StringBuffer buffer= newStringBuffer();

URL urlObj= null;

URLConnection uc= null;

InputStreamReader in= null;

BufferedReader reader= null;try{//建立网络连接

urlObj = newURL(url);//打开网络连接

uc =urlObj.openConnection();//创建输入流

in = newInputStreamReader(uc.getInputStream(),encoding);//创建一个缓冲写入流

reader = newBufferedReader(in);

String line= null;while ((line = reader.readLine()) != null) {//一行一行追加

buffer.append(line+"\r\n");

}

}catch(Exception e) {

e.printStackTrace();

}finally{try{if (in != null) {

in.close();

}

}catch(IOException e) {

e.printStackTrace();

}

}returnbuffer.toString();

}/*** 根据图片的URL下载的图片到本地的filePath

*@paramfilePath 文件夹

*@paramimageUrl 图片的网址*/

public static voiddownImages(String filePath,String imageUrl){//截取图片的名称

String fileName = imageUrl.substring(imageUrl.lastIndexOf("/"));//创建文件的目录结构

File files = newFile(filePath);if(!files.exists()){//判断文件夹是否存在,如果不存在就创建一个文件夹

files.mkdirs();

}try{

URL url= newURL(imageUrl);

HttpURLConnection connection=(HttpURLConnection) url.openConnection();

InputStream is=connection.getInputStream();//创建文件

File file = new File(filePath+fileName);

FileOutputStream out= newFileOutputStream(file);int i = 0;while((i = is.read()) != -1){

out.write(i);

}

is.close();

out.close();

}catch(Exception e) {

e.printStackTrace();

}

}//执行测试程序代码

public static voidmain(String[] args) {

Scanner input= newScanner(System.in);

System.out.print("请输入网页地址:");

String url=input.nextLine();

System.out.print("请输入编码方式:");

String encoding=input.nextLine();

System.out.print("请输入下载到电脑的位置:");

String filePath=input.nextLine();

String htmlResource=getHtmlResourceByUrl(url, encoding);//System.out.println(htmlResource);//解析网页源代码

Document document =Jsoup.parse(htmlResource);//获取所有图片的地址

Elements elements = document.getElementsByTag("img");for(Element element : elements){

String imgSrc= element.attr("src");if (!"".equals(imgSrc) && (imgSrc.startsWith("http://") || imgSrc.startsWith("https://"))) {//判断imgSrc是否为空且是否以"http://"开头

System.out.println("正在下载的图片的地址:" +imgSrc);

downImages(filePath, imgSrc);

}

}

System.out.println("-------------------------下载完毕!----------------------------");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值