前提

最近我的的朋友瀏覽一些網站,看到好看的圖片,問我有沒有辦法不用手動一張一張保存圖片!

我說用Jsoup丫!

保存壁紙太麻煩?教你如何用Java快速獲取網站圖片_maven項目

打開開發者模式(F12),找到對應圖片的鏈接,在互聯網中,每一張圖片就是一個鏈接!

保存壁紙太麻煩?教你如何用Java快速獲取網站圖片_maven項目_02

一、新建Maven項目,導入Jsoup環境依賴

org.jsoup
jsoup
1.11.2

二、代碼編寫

public class JsoupTest {
public static void main(String[] args) throws IOException {
// 爬蟲的網站
String url="https://mp.weixin.qq.com/s/caU6d6ebpsLVJaf-7gMjtg";
// 獲得網頁的document對象
Document document = Jsoup.parse(new URL(url), 10000);
// 爬取含圖片的代碼部分
Element content = document.getElementById("js_content");
// 獲取img標簽代碼  這是個集合
Elements imgs = content.getElementsByTag("img");
// 命名圖片的id
int id=0;
for (Element img : imgs) {
// 獲取具體的圖片
String pic = img.attr("data-src");
URL target = new URL(pic);
// 獲取連接對象
URLConnection urlConnection = target.openConnection();
// 獲取輸入流,用來讀取圖片信息
InputStream inputStream = urlConnection.getInputStream();
// 獲取輸出流  輸出地址+文件名
id++;
FileOutputStream fileOutputStream = new FileOutputStream("E://JsoupPic//" + id + ".png");
int len=0;
// 設置一個緩存區
byte[] buffer = new byte[1024 * 1024];
// 寫出圖片到E:/JsoupPic中,  輸入流讀數據到緩沖區中,并賦給len
while ((len=inputStream.read(buffer))>0){
// 參數一:圖片數據  參數二:起始長度  參數三:終止長度
fileOutputStream.write(buffer, 0, len);
}
System.out.println(id+".png下載完畢");
// 關閉輸入輸出流 最后創建先關閉
fileOutputStream.close();
inputStream.close();
}
}
}

成果:

保存壁紙太麻煩?教你如何用Java快速獲取網站圖片_輸入流_03

心得:

1、網絡上的每一張圖片都是一個鏈接

2、我們知道整個網頁就是一個文檔樹,先找到包含圖片的父id,再通過getElementsByTag()獲取到圖片的標簽,通過F12,我們知道圖片的鏈接是存在img標簽里面的 data-src屬性中

3、通過標簽的data-src屬性,就獲取到具體圖片的鏈接

4、通過輸入輸出流,把圖片保存在本地中!