批量下载在资料收集时很常用。aardio 的 inet.http 库自带 download 方法,配合数组清单循环调用即可。下面脚本把待下载 URL 放在表里,自动创建保存目录,逐个下载并统计结果。
实现思路
先 fsys.createDir 创建保存目录;循环遍历 URL 表,用 fsys.getFileName 从地址中取出文件名拼出完整保存路径,再调 http.download 下载;每次请求之间 sleep 控制间隔,避免被服务器限流。
完整代码
import console;
import fsys;
import inet.http;
import time;
console.open();
// 待下载清单,按需增删
var urls = {
"https://example.com/files/one.zip";
"https://example.com/files/two.zip";
"https://example.com/files/three.zip";
};
var saveDir = "/download/"; // 应用目录下的 download 目录
fsys.createDir(saveDir);
var http = inet.http();
var okCount = 0;
for (i = 1; #urls; 1) {
var url = urls[i];
var name = fsys.getFileName(url); // 取文件名
var path = fsys.joinpath(saveDir, name);
console.log("下载中:" + url);
if (http.download(url, path)) {
okCount++;
console.log("已保存:" + path);
} else {
console.log("下载失败:" + url);
}
time.sleep(500); // 500ms 请求间隔
}
http.close();
console.log("完成:成功 " + okCount + " / " + #urls);
console.pause(true);使用建议
- URL 较多时建议写入文本文件按行读取,代码可读性与可维护性更好;
- 批量请求务必带 sleep 间隔并控制并发,文明采集;
- 需要带 Cookie 或 Referer 下载时,可先用 addHeaders 设置请求头再下载。
小结
download 一步到位把网络字节流落盘,比 get 拿字符串再手动写文件更省事,是 aardio 下载类脚本的首选写法。
评论(0)
暂无评论,快来抢沙发吧~