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ù)二:起始長度 參數(shù)三:終止長度 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-02ArrayList和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-12Java 高并發(fā)五:JDK并發(fā)包1詳細(xì)介紹
本文主要介紹 Java高并發(fā)JDK并發(fā)包1的資料,這里對(duì)1.各種同步控制工具的使用 2.并發(fā)容器及典型源碼分析,有需要的小伙伴可以參考下2016-09-09IntelliJ IDEA之高效代碼插件RainBow Brackets詳解
這篇文章主要介紹了IntelliJ IDEA之高效代碼插件RainBow Brackets詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12