java爬虫下载网页图片_java爬虫-简单爬取网页图片

这个Java程序展示了如何从指定网页中爬取并下载所有图片。首先,它获取HTML内容,然后通过正则表达式匹配`<img>`标签及其`src`属性,最后将图片保存到本地文件系统。
摘要由CSDN通过智能技术生成

import java.io.*;importjava.net.URL;importjava.net.URLConnection;import java.util.*;importjava.util.regex.Matcher;importjava.util.regex.Pattern;public classMain {//地址

private static final String URL = "http://www.tooopen.com/view/1439719.html";//获取img标签正则

private static final String IMGURL_REG = "]*?>";//获取src路径的正则

private static final String IMGSRC_REG = "[a-zA-z]+://[^\\s]*";public static voidmain(String[] args) {try{

Main cm=newMain();//得到html文本内容

String HTML =cm.getHtml(URL);//获取图片标签

List imgUrl =cm.getImageUrl(HTML);//获取图片src地址

List imgSrc =cm.getImageSrc(imgUrl);//下载图片

cm.Download(imgSrc);

}catch(Exception e){

System.out.println("发生错误");

}

}//获取HTML内容

private String getHtml(String url)throwsException{

URL url1=newURL(url);

URLConnection connection=url1.openConnection();

InputStream in=connection.getInputStream();

InputStreamReader isr=newInputStreamReader(in);

BufferedReader br=newBufferedReader(isr);

String line;

StringBuffer sb=newStringBuffer();while((line=br.readLine())!=null){

sb.append(line,0,line.length());

sb.append('\n');

}

br.close();

isr.close();

in.close();returnsb.toString();

}//获取ImageUrl地址

private ListgetImageUrl(String html){

Matcher matcher=Pattern.compile(IMGURL_REG).matcher(html);

Listlistimgurl=new ArrayList();while(matcher.find()){

listimgurl.add(matcher.group());

}returnlistimgurl;

}//获取ImageSrc地址

private List getImageSrc(Listlistimageurl){

List listImageSrc=new ArrayList();for(String image:listimageurl){

Matcher matcher=Pattern.compile(IMGSRC_REG).matcher(image);while(matcher.find()){

listImageSrc.add(matcher.group().substring(0, matcher.group().length()-1));

}

}returnlistImageSrc;

}//下载图片

private void Download(ListlistImgSrc) {try{//开始时间

Date begindate = newDate();for(String url : listImgSrc) {//开始时间

Date begindate2 = newDate();

String imageName= url.substring(url.lastIndexOf("/") + 1, url.length());

URL uri= newURL(url);

InputStream in=uri.openStream();

FileOutputStream fo= new FileOutputStream(new File("src/res/"+imageName));byte[] buf = new byte[1024];int length = 0;

System.out.println("开始下载:" +url);while ((length = in.read(buf, 0, buf.length)) != -1) {

fo.write(buf,0, length);

}

in.close();

fo.close();

System.out.println(imageName+ "下载完成");//结束时间

Date overdate2 = newDate();double time = overdate2.getTime() -begindate2.getTime();

System.out.println("耗时:" + time / 1000 + "s");

}

Date overdate= newDate();double time = overdate.getTime() -begindate.getTime();

System.out.println("总耗时:" + time / 1000 + "s");

}catch(Exception e) {

System.out.println("下载失败");

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值