1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
| const https = require("https"); const http = require("http"); const fs = require("fs"); const path = require("path");
const imageData = [ { url: "http://p0.meituan.net/shangouproductapi/1a819ba723050197535a538fe746c5d1414536.jpg@54w", text: "【健康常乐】1枝蓝绣球9枝粉玫瑰6枝白玫瑰混搭桔梗尤加利叶花束送妈妈送长辈生日鲜花花束", price: "99", }, { url: "http://p0.meituan.net/shangouproductapi/6f20053c801c1a16140b02f807769b77216961.jpg@54w", text: "【美好祝福】10朵粉玫瑰桔梗绿菱草紫罗兰混搭鲜花送长辈送妈妈送领导送老师生日鲜花", price: "92", }, { url: "http://p0.meituan.net/shangouproductapi/781b2018bc222463a8ff6b5099f44ec5243922.jpg@54w", text: "【暖居如意】17朵红玫瑰混搭8朵卡布奇诺玫瑰花抱抱桶花束生日鲜花礼物乔迁搬新家开业送朋友", price: "125", }, ];
const imageDir = "./downloaded_images"; if (!fs.existsSync(imageDir)) { fs.mkdirSync(imageDir); }
function downloadImage(url, dest) { return new Promise((resolve, reject) => { const protocol = url.startsWith("https") ? https : http;
const file = fs.createWriteStream(dest);
const request = protocol.get(url, (response) => { if (response.statusCode !== 200) { reject(new Error(`请求失败: ${response.statusCode}`)); return; }
response.pipe(file);
file.on("finish", () => { file.close(); resolve(dest); }); });
request.on("error", (error) => { fs.unlink(dest, () => reject(error)); });
file.on("error", (error) => { fs.unlink(dest, () => reject(error)); }); }); }
function generateSafeFilename(text, index) { let safeName = text.replace(/[<>"/\\|?*\s]/g, ""); return `${safeName}-${index}.jpg`; }
async function main() { console.log("开始下载图片..."); let successCount = 0; let failCount = 0;
for (let i = 0; i < imageData.length; i++) { const item = imageData[i]; const filename = generateSafeFilename(item.text, item.price); const destPath = path.join(imageDir, filename);
try { await downloadImage(item.url, destPath); console.log(`下载成功: ${filename}`); successCount++; } catch (error) { console.error(`下载失败: ${item.url} - ${error.message}`); failCount++; }
if (i < imageData.length - 1) { await new Promise((resolve) => setTimeout(resolve, 2000)); } }
console.log(`\n下载完成!`); console.log(`成功: ${successCount} 张`); console.log(`失败: ${failCount} 张`); }
main().catch((error) => { console.error("程序执行出错:", error); });
|