最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用JavaScript實現(xiàn)獲取頁面上所有的img并保存本地

 更新時間:2024年12月13日 10:32:13   作者:Struggle_zhu  
這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript實現(xiàn)獲取頁面上所有的img并保存到本地,文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解下

瀏覽器的 JavaScript 環(huán)境中受限于安全和隱私原因,不允許直接指定下載文件夾或訪問本地文件系統(tǒng)。因此,無法通過純 JavaScript 在瀏覽器控制臺中實現(xiàn)下載圖片到指定文件夾的功能。

然而,您可以使用 Web API 提供的文件系統(tǒng)訪問 API 進(jìn)行一定程度的操作,但需要用戶手動確認(rèn)和操作。以下是一個在支持文件系統(tǒng)訪問 API 的瀏覽器(如 Chrome)中使用的示例腳本:

(async () => {
  // 獲取所有圖像元素
  const images = document.querySelectorAll("img");

  // 文件系統(tǒng)訪問 API:請求用戶選擇下載文件夾
  const dirHandle = await window.showDirectoryPicker();

  for (let [index, img] of images.entries()) {
    try {
      const url = img.src;
      const response = await fetch(url);
      const blob = await response.blob();

      // 獲取圖片的 MIME 類型并確定文件擴展名
      const contentType = blob.type;
      let extension = contentType.split("/")[1]; // 從 MIME 類型中提取文件擴展名

      // 特別處理 SVG 圖片格式
      if (contentType === "image/svg+xml") {
        extension = "svg";
      }

      const fileName = `${index + 1}.${extension}`;

      // 創(chuàng)建并寫入文件
      const fileHandle = await dirHandle.getFileHandle(fileName, {
        create: true,
      });
      const writable = await fileHandle.createWritable();
      await writable.write(blob);
      await writable.close();

      console.log(`Downloaded: ${fileName}`);
    } catch (error) {
      console.error(`Failed to download image ${index + 1}:`, error);
    }
  }
})();

此腳本的工作方式如下:

  • 獲取當(dāng)前頁面的所有 img 標(biāo)簽。
  • 使用文件系統(tǒng)訪問 API 請求用戶選擇下載文件夾(此操作需要用戶確認(rèn))。
  • 遍歷每個圖片 URL,使用 fetch 函數(shù)獲取圖片數(shù)據(jù)。
  • 在用戶選擇的文件夾中創(chuàng)建對應(yīng)的文件,并將圖片數(shù)據(jù)寫入文件。

請注意,此方法僅在支持文件系統(tǒng)訪問 API 的瀏覽器(如 Chrome)中可用,并且用戶需要手動確認(rèn)并選擇下載文件夾。

要在瀏覽器控制臺中執(zhí)行此腳本,請按照以下步驟操作:

  • 打開你要下載圖片的網(wǎng)頁。
  • 按 F12 或 Ctrl + Shift + I(Windows)或 Cmd + Option + I(Mac)打開開發(fā)者工具。
  • 選擇“Console”標(biāo)簽頁。
  • 將上面的腳本代碼粘貼到控制臺中,然后按 Enter 鍵執(zhí)行。

執(zhí)行腳本時,瀏覽器會彈出文件夾選擇對話框,用戶選擇文件夾后,腳本會自動將所有圖片下載并保存到該文件夾中。

知識補充

除了上文的內(nèi)容,小編還為大家整理了使用js腳本一鍵下載網(wǎng)頁所有圖片的方法,希望對你有所幫助

測試環(huán)境:Chrome開發(fā)者模式下(啟動Chrome,按F12即可)

測試網(wǎng)頁:知乎某問題

原理很簡單,用到了a標(biāo)簽的href及download屬性和點擊事件。

完整代碼

//一個對象,存儲頁面圖片數(shù)量和下載的數(shù)量
var monitorObj = {
    imgTotal: 0,
    imgLoaded: 0
}
//創(chuàng)建a標(biāo)簽,賦予圖片對象相關(guān)屬性,并插入body
var createA = function (obj) {
    var a = document.createElement("a");
    a.id = obj.id;
    a.target = "_blank";//注意:要在新頁面打開
    a.href = obj.url;
    a.download = obj.url;

    document.body.appendChild(a);
}

//獲取頁面的圖片
var imgs = document.images;
//創(chuàng)建每個圖片對象的對應(yīng)a標(biāo)簽
for (var i = 0; i < imgs.length;i++){
    var obj = {
        id: "img_" + i,
        url: imgs[i].src
    }
    //過濾掉不屬于這幾種類型的圖片
    if (["JPG", "JPEG", "PNG","GIF"].indexOf(obj.url.substr(obj.url.lastIndexOf(".")+1).toUpperCase()) < 0) {
        continue;
    }
    //這里是為了去掉知乎用戶頭像的圖片,頭像大小是50*50
    if (imgs[i].width <= 50 || imgs[i].height <= 50) {
        continue;
    }
    //統(tǒng)計圖片數(shù)量
    monitorObj.imgTotal++;
    createA(obj);
}
//開始下載圖片
for (var i = 0; i < imgs.length; i++) {
    if (document.getElementById("img_" + i)) {
        //重點:觸發(fā)a標(biāo)簽的click事件
        document.getElementById("img_" + i).click();
        monitorObj.imgLoaded++; //統(tǒng)計已下載的圖片數(shù)量
    }
}
console.log("已下載:"+monitorObj.imgLoaded + "/" + monitorObj.imgTotal);

到此這篇關(guān)于使用JavaScript實現(xiàn)獲取頁面上所有的img并保存本地的文章就介紹到這了,更多相關(guān)JavaScript獲取頁面img內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于p5.js 2D圖像接口的擴展(交互實現(xiàn))

    基于p5.js 2D圖像接口的擴展(交互實現(xiàn))

    這篇文章主要為大家詳細(xì)介紹了基于p5.js 2D圖像接口的擴展,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 微信小程序云開發(fā)之使用云存儲

    微信小程序云開發(fā)之使用云存儲

    這篇文章主要為大家詳細(xì)介紹了微信小程序云開發(fā)之使用云存儲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 使用Axios結(jié)合Typescript二次封裝完整詳細(xì)場景使用案例

    使用Axios結(jié)合Typescript二次封裝完整詳細(xì)場景使用案例

    本文詳細(xì)介紹了如何使用TypeScript對Axios進(jìn)行二次封裝,以提高HTTP請求的統(tǒng)一管理和可維護(hù)性,通過創(chuàng)建Axios實例、封裝請求和響應(yīng)處理、錯誤處理以及創(chuàng)建特定的API服務(wù),可以實現(xiàn)更加一致和方便的API調(diào)用,需要的朋友可以參考下
    2024-11-11
  • 借助JavaScript腳本判斷瀏覽器Flash Player信息的方法

    借助JavaScript腳本判斷瀏覽器Flash Player信息的方法

    做了一個小的Demo,在測試時發(fā)現(xiàn)經(jīng)常報錯,對此總結(jié)了一下借助JavaScript腳本判斷瀏覽器Flash Player信息的方法,需要的朋友可以參考下
    2014-07-07
  • js實現(xiàn)登陸與注冊功能

    js實現(xiàn)登陸與注冊功能

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)登陸與注冊功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解element-ui 表單校驗 Rules 配置 常用黑科技

    詳解element-ui 表單校驗 Rules 配置 常用黑科技

    這篇文章主要介紹了element-ui 表單校驗 Rules 配置 常用黑科技,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • BootStrap便簽頁的簡單應(yīng)用

    BootStrap便簽頁的簡單應(yīng)用

    本文通過實例代碼給大家簡單介紹了bootstrap便簽頁的簡單應(yīng)用,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2017-01-01
  • 二叉樹先序遍歷的非遞歸算法具體實現(xiàn)

    二叉樹先序遍歷的非遞歸算法具體實現(xiàn)

    這篇文章主要介紹了二叉樹先序遍歷的非遞歸算法,有需要的朋友可以參考一下
    2014-01-01
  • JavaScript 代碼壓縮工具小結(jié)

    JavaScript 代碼壓縮工具小結(jié)

    為了使頁面更快的完成加載,經(jīng)常需要對javascript/css代碼進(jìn)行壓縮以減小體積,這里簡單列一下用過的壓縮工具,同時也作為存檔
    2012-02-02
  • fetch跨域問題的使用詳解

    fetch跨域問題的使用詳解

    這篇文章主要介紹了fetch跨域問題的使用詳解,fetch 的核心主要包括:Request , Response , Header , Body,利用了請求的異步特性 --- 它是基于 promise 的,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09

最新評論

南召县| 乳源| 颍上县| 禹城市| 招远市| 安阳市| 锡林郭勒盟| 德江县| 辉南县| 镇安县| 延庆县| 泰州市| 建瓯市| 三亚市| 绥江县| 通道| 黑河市| 女性| 伊金霍洛旗| 威海市| 措美县| 姚安县| 九寨沟县| 化德县| 甘南县| 太湖县| 余姚市| 鹤峰县| 永嘉县| 综艺| 奎屯市| 咸阳市| 兴安县| 上高县| 东光县| 比如县| 伊川县| 奈曼旗| 南华县| 民权县| 灯塔市|