日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java爬虫下载图片到磁盘_java入门爬虫(爬取网页的图片下载到本地磁盘)

發布時間:2025/3/21 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java爬虫下载图片到磁盘_java入门爬虫(爬取网页的图片下载到本地磁盘) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java爬蟲入門技術

我們需要用到http協議 從而建立java程序和網頁的連接

URL url = new URL("https://www.ivsky.com/tupian/ziranfengguang/");

URLConnection urlConnection=url.openConnection();

urlConnection.connect();//讀取網頁的html

BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

上面的代碼就是建立java程序和網頁的連接

我們爬蟲首先是將網頁的Html代碼爬下來

接下來我們需要從這些代碼中找到有用的東西,我們發現大部分圖片會有一個src資源

如果只是找一張圖片我們可以直接用find函數查找,但是我們需要多張圖片,此時正則表達式就顯示了他的威力

我們直接用正則表達式匹配出來src資源

代碼如下:

String line = null;

//正則表達式,解釋如下在最少的""里面匹配到子表達式 ?相當于懶惰(匹配盡可能少)

Pattern pattern = Pattern.compile("src=\"(.+?)\"");

List list = new ArrayList();

while((line = br.readLine()) != null) {

Matcher m = pattern.matcher(line);

while(m.find()) {

//查到之后添加list里面

list.add(m.group());

}

}

匹配出來這些字符串我們還需要對他們進行一些處理篩選出來圖片的地址

代碼如下

//篩選src,找到jpg和png和gif結尾的(設置新格式也就是截取字符串)放到圖片集合里面

List imglist = new ArrayList();for(String xString : list) {if(xString.endsWith(".jpg\"") || xString.endsWith(".png\"") || xString.endsWith(".gif\"")) {//截取字符串的一部分也就是圖片的地址

String partString = xString.substring(5,xString.length() - 1);

imglist.add(partString);

}

}

處理好之后我們就剩下最后一步了(下載)

下載就是將圖片讀進本地磁盤

代碼如下

//開始下載

Date beginDate = newDate();for(String xString : imglist) {

Date partbeginDate= newDate();

URL partUrl;if(!xString.startsWith("http:")) {

partUrl= new URL("http:"+xString);if(!("http:"+xString).startsWith("http://")) {continue;

}

}else{

partUrl= newURL(xString);

}

System.out.println(partUrl);

String nameString= xString.substring(xString.lastIndexOf("/") + 1,xString.length());

File file= new File("E:\\圖片下載\\"+nameString);

InputStream is=partUrl.openStream();

BufferedInputStream bis= newBufferedInputStream(is);

BufferedOutputStream bos= new BufferedOutputStream(newFileOutputStream(file));

System.out.println("開始下載" +xString);int len = 0;while((len = bis.read()) != -1){

bos.write(len);

}

System.out.println("下載完成");

Date partendDate= newDate();double ti = (partendDate.getTime() - partbeginDate.getTime()) / 1000;

System.out.println("用時" + String.format("%.8f", ti) + "s");

bis.close();

bos.close();

}

Date endDate= newDate();double ti = (endDate.getTime() - beginDate.getTime() ) / 1000;

System.out.println("全部下載完成");

System.out.println("總用時" + String.format("%.8f", ti) + "s");

代碼綜合如下

packageworm;import java.io.*;importjava.net.MalformedURLException;importjava.net.URL;importjava.net.URLConnection;import java.util.*;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importjavax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction;public classMain {public static void main(String[] args) throwsException {/** 連接網頁*/URL url= new URL("https://www.ivsky.com/tupian/ziranfengguang/");

URLConnection urlConnection=url.openConnection();

urlConnection.connect();//讀取網頁的html

BufferedReader br = new BufferedReader(newInputStreamReader(urlConnection.getInputStream()));

String line= null;//正則表達式,解釋如下在最少的""里面匹配到子表達式 ?相當于懶惰(匹配盡可能少)

Pattern pattern = Pattern.compile("src=\"(.+?)\"");

List list = new ArrayList();while((line = br.readLine()) != null) {

Matcher m=pattern.matcher(line);while(m.find()) {//查到之后添加list里面

list.add(m.group());

}

}

br.close();//篩選src,找到jpg和png和gif結尾的(設置新格式也就是截取字符串)放到圖片集合里面

List imglist = new ArrayList();for(String xString : list) {if(xString.endsWith(".jpg\"") || xString.endsWith(".png\"") || xString.endsWith(".gif\"")) {//截取字符串的一部分也就是圖片的地址

String partString = xString.substring(5,xString.length() - 1);

imglist.add(partString);

}

}//開始下載

Date beginDate = newDate();for(String xString : imglist) {

Date partbeginDate= newDate();

URL partUrl;if(!xString.startsWith("http:")) {

partUrl= new URL("http:"+xString);if(!("http:"+xString).startsWith("http://")) {continue;

}

}else{

partUrl= newURL(xString);

}

System.out.println(partUrl);

String nameString= xString.substring(xString.lastIndexOf("/") + 1,xString.length());

File file= new File("E:\\圖片下載\\"+nameString);

InputStream is=partUrl.openStream();

BufferedInputStream bis= newBufferedInputStream(is);

BufferedOutputStream bos= new BufferedOutputStream(newFileOutputStream(file));

System.out.println("開始下載" +xString);int len = 0;while((len = bis.read()) != -1){

bos.write(len);

}

System.out.println("下載完成");

Date partendDate= newDate();double ti = (partendDate.getTime() - partbeginDate.getTime()) / 1000;

System.out.println("用時" + String.format("%.8f", ti) + "s");

bis.close();

bos.close();

}

Date endDate= newDate();double ti = (endDate.getTime() - beginDate.getTime() ) / 1000;

System.out.println("全部下載完成");

System.out.println("總用時" + String.format("%.8f", ti) + "s");

}

}

運行截圖如下:

原文:https://www.cnblogs.com/WINDZLY/p/12548723.html

總結

以上是生活随笔為你收集整理的java爬虫下载图片到磁盘_java入门爬虫(爬取网页的图片下载到本地磁盘)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。