Java 獲取網(wǎng)站圖片的示例代碼
前提
最近我的的朋友瀏覽一些網(wǎng)站,看到好看的圖片,問我有沒有辦法不用手動(dòng)一張一張保存圖片!
我說用Jsoup丫!

打開開發(fā)者模式(F12),找到對(duì)應(yīng)圖片的鏈接,在互聯(lián)網(wǎng)中,每一張圖片就是一個(gè)鏈接!

一、新建Maven項(xiàng)目,導(dǎo)入Jsoup環(huán)境依賴
<groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.11.2</version> </dependency>
二、代碼編寫
public class JsoupTest {
public static void main(String[] args) throws IOException {
// 爬蟲的網(wǎng)站
String url="https://mp.weixin.qq.com/s/caU6d6ebpsLVJaf-7gMjtg";
// 獲得網(wǎng)頁的document對(duì)象
Document document = Jsoup.parse(new URL(url), 10000);
// 爬取含圖片的代碼部分
Element content = document.getElementById("js_content");
// 獲取img標(biāo)簽代碼 這是個(gè)集合
Elements imgs = content.getElementsByTag("img");
// 命名圖片的id
int id=0;
for (Element img : imgs) {
// 獲取具體的圖片
String pic = img.attr("data-src");
URL target = new URL(pic);
// 獲取連接對(duì)象
URLConnection urlConnection = target.openConnection();
// 獲取輸入流,用來讀取圖片信息
InputStream inputStream = urlConnection.getInputStream();
// 獲取輸出流 輸出地址+文件名
id++;
FileOutputStream fileOutputStream = new FileOutputStream("E:\\JsoupPic\\" + id + ".png");
int len=0;
// 設(shè)置一個(gè)緩存區(qū)
byte[] buffer = new byte[1024 * 1024];
// 寫出圖片到E:\JsoupPic中, 輸入流讀數(shù)據(jù)到緩沖區(qū)中,并賦給len
while ((len=inputStream.read(buffer))>0){
// 參數(shù)一:圖片數(shù)據(jù) 參數(shù)二:起始長(zhǎng)度 參數(shù)三:終止長(zhǎng)度
fileOutputStream.write(buffer, 0, len);
}
System.out.println(id+".png下載完畢");
// 關(guān)閉輸入輸出流 最后創(chuàng)建先關(guān)閉
fileOutputStream.close();
inputStream.close();
}
}
}
成果:

心得:
1、網(wǎng)絡(luò)上的每一張圖片都是一個(gè)鏈接
2、我們知道整個(gè)網(wǎng)頁就是一個(gè)文檔數(shù),先找到包含圖片的父id,再通過getElementsByTag()獲取到圖片的標(biāo)簽,通過F12,我們知道圖片的鏈接是存在img標(biāo)簽里面的 data-src屬性中
3、通過標(biāo)簽的data-src屬性,就獲取到具體圖片的鏈接
4、通過輸入輸出流,把圖片保存在本地中!
到此這篇關(guān)于Java 獲取網(wǎng)站圖片的示例代碼的文章就介紹到這了,更多相關(guān)Java 獲取網(wǎng)站圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中的NoSuchMethodException異常原因以及解決方案詳解
這篇文章主要介紹了Java中的NoSuchMethodException異常原因以及解決方案詳解,NoSuchMethodException是Java反射機(jī)制中的異常,在嘗試通過反射獲取方法時(shí),找不到指定的方法,通常發(fā)生在調(diào)用?Class?對(duì)象的方法時(shí),當(dāng)方法名或方法參數(shù)不匹配時(shí)拋出該異常,需要的朋友可以參考下2024-02-02
ArrayList和HashMap如何自己實(shí)現(xiàn)實(shí)例詳解
這篇文章主要介紹了 ArrayList和HashMap如何自己實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2016-12-12
利用Java+MySQL實(shí)現(xiàn)附近功能實(shí)例
現(xiàn)在很多手機(jī)軟件都用附近搜索功能,但具體是怎么實(shí)現(xiàn)的呢?下面這篇文章就來給大家介紹關(guān)于利用Java+MySQL實(shí)現(xiàn)附近功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-12-12
Java 高并發(fā)五:JDK并發(fā)包1詳細(xì)介紹
本文主要介紹 Java高并發(fā)JDK并發(fā)包1的資料,這里對(duì)1.各種同步控制工具的使用 2.并發(fā)容器及典型源碼分析,有需要的小伙伴可以參考下2016-09-09
IntelliJ IDEA之高效代碼插件RainBow Brackets詳解
這篇文章主要介紹了IntelliJ IDEA之高效代碼插件RainBow Brackets詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12

