年前这两天稍微闲一点了,琢磨了一点js脚本,功能是把当前网页页面上的所有图片一次性保存到本地,免得每次都要对图片右键保存。

测试环境:Chrome开发者模式下(启动Chrome,按F12即可)

测试网页:知乎某问题

原理很简单,用到了a标签的href及download属性和点击事件。

直接贴代码吧:

  1. //一个对象,存储页面图片数量和下载的数量
  2. var monitorObj = {
  3. imgTotal: 0,
  4. imgLoaded: 0
  5. }
  6. //创建a标签,赋予图片对象相关属性,并插入body
  7. var createA = function (obj) {
  8. var a = document.createElement("a");
  9. a.id = obj.id;
  10. a.target = "_blank";//注意:要在新页面打开
  11. a.href = obj.url;
  12. a.download = obj.url;
  13.  
  14. document.body.appendChild(a);
  15. }
  16.  
  17. //获取页面的图片
  18. var imgs = document.images;
  19. //创建每个图片对象的对应a标签
  20. for (var i = 0; i < imgs.length;i++){
  21. var obj = {
  22. id: "img_" + i,
  23. url: imgs[i].src
  24. }
  25. //过滤掉不属于这几种类型的图片
  26. if (["JPG", "JPEG", "PNG","GIF"].indexOf(obj.url.substr(obj.url.lastIndexOf(".")+1).toUpperCase()) < 0) {
  27. continue;
  28. }
  29. //这里是为了去掉知乎用户头像的图片,头像大小是50*50
  30. if (imgs[i].width <= 50 || imgs[i].height <= 50) {
  31. continue;
  32. }
  33. //统计图片数量
  34. monitorObj.imgTotal++;
  35. createA(obj);
  36. }
  37. //开始下载图片
  38. for (var i = 0; i < imgs.length; i++) {
  39. if (document.getElementById("img_" + i)) {
  40. //重点:触发a标签的click事件
  41. document.getElementById("img_" + i).click();
  42. monitorObj.imgLoaded++; //统计已下载的图片数量
  43. }
  44. }
  45. console.log("已下载:"+monitorObj.imgLoaded + "/" + monitorObj.imgTotal);

把上面的代码拷贝出来,粘贴到Chrome的Console命令行,回车即可。

当然实现保存图片的方法还有很多,这里仅作娱乐。

也许你很想试一试,那么可以点这里

用js脚本一键下载网页所有图片的更多相关文章

  1. nodejs下载网页所有图片

    前言 昨天一番发了一篇批量下载手机壁纸的文章,分享了抓取到的美图给小伙伴,然后一番就美美的去碎觉了. 早上起来看到有小伙伴在日更群里说有没有狗哥的?憨憨的一番以为就是狗的图片,于是就发了几张昨天抓取的 ...

  2. 使用js脚本批量下载慕课网视频

    慕课网(http://www.imooc.com/)上有很多不错的视频,当然我不是来给慕课网打广告的,我本人学习过很多慕课网上的免费的视频. 在线看如果网速慢时,可能会有卡顿,没网时无法观看.所有说下 ...

  3. JS脚本加载与执行对性能的影响

    高性能JavaScript-JS脚本加载与执行对性能的影响 在web产品优化准则中,很重要的一条是针对js脚本的加载和执行方式的优化.本篇文章简单描述一下其中的优化准则. 1. 脚本加载优化 1.1 ...

  4. js脚本 将本地图片路径转换为html

    公司业务类似于电商, 因此有很多纯图片展示的商品详情页, 类似淘宝店商品页面下的多个图片组成的商品详情页, 页面很简单, 就是一大串img标签, 但是每次做详情页都要配合emmet一顿操作( 如下图 ...

  5. 【转】Image Cyborg 一键下载存储网页所有图片

    下午仿照网上例子写了个抓取网页中图片并保存到本地的Python的例子,好奇就google了下是否有类似的在线抓取图片的外挂工具. 接着就找到了Pseric写的这篇文章 - Image Cyborg 一 ...

  6. 页面js脚本与img等资源的下载顺序问题。

    引言问题 <img src="background.jpg"><script src="test.js"></script> ...

  7. 原创js脚本实现百度网盘任意文件强制下载

    代码: //get file list data var data=require("system-core:context/context.js").instanceForSys ...

  8. 利用 JS 脚本实现网页全自动秒杀抢购

    利用 JS 脚本实现网页全自动秒杀抢购 倒计时页面: 倒计时未结束时,购买按钮还不能点击. 结束时,可以点击购买,点击后出现提示"付款成功" 展示效果 1.制作测试网页 首先我们来 ...

  9. 高端黑链SEO—恶意JS脚本注入访问伪随机域名

    摘要:我们的服务器又出入侵事故了.有客户的 html 网页底部被插入了一段 js 脚本,导致访客打开网页时被杀毒软件警告网站上有恶意代码.在黑链 SEO 中这是常见的手法,但奇特的地方就在于我们这次捕 ...

随机推荐

  1. Lua语言的介绍和编程语言的归类

    Lua 本条目介绍的是一种编程语言.关于关于Lua在维基百科中的使用,请见"维基百科:Lua".关于"Lua"一词的其他意思,请见"卢阿". ...

  2. 关于Swing窗体有时候要放大缩小边框才能显示问题?

    有时候会出现编写swing窗体后添加的组件在run之后显示不出来的问题.如图: 搜了下解决办法.此时如果是程序里面有panel组件的话,应该这样: labels[i] = new Label(lett ...

  3. How to find missing USB Records?

    In my previously article "EnCase missed some USB activities in the evidence files", I ment ...

  4. LNMP下FTP服务器的安装和使用(Pureftpd和Proftpd)

    FTP是网站文件维护中使用比较多的,目前LNMP一键安装包中有Pureftpd和Proftpd服务器安装脚本,LNMP默认不安装任何FTP服务器,需要用户自行安装(1.2开始不再提供proftpd的安 ...

  5. 把VueThink整合到已有ThinkPHP 5.0项目中

     享 关键字: VueThink ThinkPHP5.0 Vue2.x TP5 管理后台扩展 VueThink初认识 VueThink,是一个很不错的技术框架,由广州洪睿科技的技术团队2016年研发( ...

  6. PHP flock() 函数

    定义和用法 flock() 函数锁定或释放文件. 若成功,则返回 true.若失败,则返回 false. 语法 flock(file,lock,block) 参数 描述 file 必需.规定要锁定或释 ...

  7. nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address 

    http://blog.csdn.net/ownfire/article/details/7966645 今天在做LNMP的时候,启动nginx服务,无法开启,导致网页打不开.把服务从起一下发现提示错 ...

  8. xshell 与 putty

    http://blog.csdn.net/efine_dxq/article/details/54599184 一.Xshell 与 putty概念 Xshell是一个强大的安全终端模拟软件,它支持S ...

  9. IOS中UIScrollView的contentSize、contentOffset和contentInset属性

    IOS中,UIScrollView是可以滚动的视图,其中最常用的UITableView就是继承了UIScrollView. 跟所有的view一样,UIScrollView有一个frame属 性,同时, ...

  10. 2017年 JavaScript 框架回顾 -- 后端框架

    本文是2017年 JavaScript 框架回顾系列的最后的一篇文章,主要介绍 JavaScript 的后端框架情况. 从上图中可以看到,Express 作为用 JavaScript 编写的后端服务的 ...