Mac使用 automator 自动批量处理网站下载

本文介绍如何利用Chrome的BulkMedia Downloader插件配合Automator工具,实现批量下载音乐网站的MP3,通过Automator创建循环,自动生成并打开URL,抓取并下载指定内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

automator是个很方便的工具,当有重复批量处理事情的时候,可以帮上大忙。

使用chrome做网站特定内容下载,使用bulk media downloader插件,可以针对需要的内容,如mp3做批量下载,尤其对于很多在线播放网站,自动找到mp3的下载地址,直接批量下载。

这两个工具结合起来,自动化手工爬一个系列mp3,一个歌单什么的,简直不要太好用。

准备:

Chrome和插件

https://chrome.google.com/webstore/detail/bulk-media-downloader/ehfdcgbfcboceiclmjaofdannmjdeaoi?hl=en安装略

 这个插件的用法是,安装好后,打开这个插件,会新开一个chrome窗口,当有需要的媒体内容出现在网页,会自动将内容链接过滤显示出来,之后在直接批量下载即可。

 如图,左边是音乐播放,右边会自动将需要的内容和下载地址选中,下面有Download按钮,直接下载即可。

automator使用

这个工具就很有意思了

首先,需要一个循环,如果需要下载的url地址是数字组成的,就更方便了,

例如,有个200集的多媒体连载,每一集有个不同的地址,例如

http://xbd.wangluoyuming.com/gushi-1.html  

……

http://xbd.wangluoyuming.com/gushi-200.html  (这个地址是瞎编的  网络域名)

需要用automator循环组成这个系列地址,需要一个变量,从1到200,每次加一,配合地址的固定部分,生成一个url,然后把这个地址发送给chrome让chrome打开,打开后,bulk media downloader插件会自动选出需要的下载文件地址,每一个url选择一个,在bulk里面形成200个地址列表,最后在bulk里面点击下载即可。

开始在automator里面新建一个workflow

 

automator的变量

如图下方右边有两个显示选项,一个是日志log,另一个是变量variable,可以直接鼠标右键,新建变量,起名并设定值为1

 OK,变量除了自定义之外,automator提供了很多可以直接使用的,比如时间、版本号之类的很多。

变量的用法是,Get和Set,这两个没有分类,直接左边在Library里面找到,拖拽的右边窗口,会自动列出之前所定义变量的名字 

automator的循环

 

左边Library库里面的Utilities分类里面的Loop,直接鼠标拖拽到右边窗口即可。

Loop的功能是,从第一个动作,顺序到了loop后,再从第一个重新开始。 

Loop的执行默认是,需要询问是否继续,现在直接执行时,每次循环到Loop,会提示是否要继续

 现在是个空循环,执行的内容是

获取我的变量的值

设置我的变量的值

循环(提示继续或不继续)

组装序列地址automator让chrome打开url

这部分就需要用applescript来做了,automator也支持javascript

 拖一个 执行AppleScript放在获取变量值的后面,即插入到第二步

input是上一个动作的输出,在Chrome的所有窗口的所有tab页面寻找包含“http://xbd.wangluoyuming.com/gushi-”字符串的tab,找到了就把该tab 设置为active,并用变量组装序列url让chrome打开,如果所有窗口都找不到,就在chrome新建一个window,并打开。从而bulk会自动获取所有需要的资源地址列表。

代码如下,细节解释略


on run {input, parameter}
	set num to input as number
	-- 设置常量
	set TARGETURL to "http://xbd.wangluoyuming.com/gushi-"
	
	
	set startNoTxt to num as string
	
	set tab_URL to TARGETURL & startNoTxt & ".html"
	set found to false
	set foundwindowidx to 1
	tell application "Google Chrome"
		repeat with w in windows
			set i to 1
			repeat with t in tabs of w
				if URL of t contains TARGETURL then
					set active tab index of w to i -- 将活动tab设置为找到的i
					set foundwindowidx to index of w

					set found to true
					exit repeat
				end if
				set i to i + 1
			end repeat
			if found then exit repeat
		end repeat
		
		
		if found then
			set URL of active tab of window foundwindowidx to tab_URL
		else
			make new window
			activate
			open location tab_URL
		end if
	end tell
	
	return (num + 1) as string
end run

注意 return语句,就是本动作输出给下一个动作的input,后面是Set Value,正好把这个已经加1的值赋值给我的变量。

Done!