【网页图片批量下载器】图片只要能看到就能下载,别再一张一张保存啦

前言

  昨天逛壁纸网站的时候,看到几张不错的图片,想保存下载当头像的,但无奈图片种类太多,一张张下载太慢,于是一怒之下😡开发了这款图片批量下载神器😎!

正文

进入正题!这是一款浏览器扩展,稍微需要一点点前端知识就能驾驭哈,小白也不用担心,我会一步一步教大家使用的。

10秒钟分析网页

bootcdn网站为例,批量下载该网站上方的几张图片。

  1. 打开控制台(按键盘F12)

  2. 点击箭头所指的按钮再点击页面上随便一张图片

  3. 观察控制台找到该图片的class名称(img开头的就是图片)

  4. 复制这个class名称(标红线处),粘贴到插件的输入框,选择“图片本身的class名称”模式,然后点击下载按钮

    开始享受唰唰唰下载的快乐吧😄😄!

细心的小伙伴发现了,这个路径是个相对路径,所以我们需要拼接上当前的网址

获取待下载图片的class名称
示例
  但有时候,img标签可能没有class名称(如下图),那这个时候我们就需要向上找一找,看看它的父元素是否包含class名称,一般都是包含的,我们复制父元素的class名称,然后模式选择“包裹图片的class名称”,也能够实现下载!

下载图片
示例

核心代码

// popup.js
$(function(){
    $('#downloadBtn').click(()=>{
        var className = $("#clazz").val()
        if (className=='' || className==null || className==undefined){
            return
        }
        var selectedRadio = $('input[name="exampleRadio"]:checked').val()
        chrome.tabs.query({active:true, currentWindow:true}, function (tab) {
            chrome.tabs.sendMessage(tab[0].id, {  
               action: "url",className,selectedRadio
            }, function (urls) {
                for (let index = 0; index < urls.length; index++) {
                    const url = urls[index]
                    chrome.downloads.download({
                        url: url,
                        conflictAction: 'uniquify',
                        saveAs: false
                    });
                }
            });
        });
    })
})
// content.js
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
	const action = request.action;
	switch (action) {
		case "url":
			const className = request.className;
			const radioVal = request.selectedRadio;
			let urls = []
			for (let index = 0; index < $("."+className).length; index++) {
				const imgItem = $("."+className)[index];
				// 1代表使用包裹图片的class向下追踪图片,2代表直接使用图片本身的class
				const url = radioVal==1?$(imgItem).find('img').attr('src'):$(imgItem).attr('src')
				// 需要注意,图片可能是相对路径,如果是相对路径则需要拼接上网址
				urls.push(url.startsWith("http")?url:window.location.href+url)
			}
			sendResponse(urls)
	}
})

总结

好了,小工具就分享到这边啦!完整代码关注公众号【好券菌】,回复【图片下载】即可免费领取😄😄,公众号还有更多福利送给大家!

本工具仅供学习参考之用,切勿用于商业用途,正儿八经要商用的图片还得作者授权才行,不过一般现在能在页面上免费获取到的,都是带水印的,哈哈!

关注公众号
在这里插入图片描述

运行环境 .NET Framework2.0 开发工具 Microsoft Visual Studio 2005 二. 部分代码说明(主要讲解异步分析和下载): 异步分析下载采取的策略是同时分析同时下载,即未等待数据全部分析完毕就开始把已经分析出来的图片链接开始下载下载成功的均在List框链接前面划上了√ ,未能下载图片有可能是分析错误或者是下载异常。 1. 异步分析部分代码 /// /// 异步分析下载 /// private void AsyncAnalyzeAndDownload(string url, string savePath) { this.uriString = url; this.savePath = savePath; #region 分析计时开始 count = 0; count1 = 0; freq = 0; result = 0; QueryPerformanceFrequency(ref freq); QueryPerformanceCounter(ref count); #endregion using (WebClient wClient = new WebClient()) { AutoResetEvent waiter = new AutoResetEvent(false); wClient.Credentials = CredentialCache.DefaultCredentials; wClient.DownloadDataCompleted += new DownloadDataCompletedEventHandler(AsyncURIAnalyze); wClient.DownloadDataAsync(new Uri(uriString), waiter); //waiter.WaitOne(); //阻止当前线程,直到收到信号 } } /// /// 异步分析 /// protected void AsyncURIAnalyze(Object sender, DownloadDataCompletedEventArgs e) { AutoResetEvent waiter = (AutoResetEvent)e.UserState; try { if (!e.Cancelled && e.Error == null) { string dnDir = string.Empty; string domainName = string.Empty; string uri = uriString; //获得域名 http://www.sina.com/ Match match = Regex.Match(uri, @"((http(s)?://)?)+[\w-.]+[^/]");//, RegexOptions.IgnoreCase domainName = match.Value; //获得域名最深层目录 http://www.sina.com/mail/ if (domainName.Equals(uri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值