批量下载在资料收集时很常用。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 下载类脚本的首选写法。