const axios = require('axios');
const fs = require('fs');
const path = require('path');
const cheerio = require('cheerio');
const { str } = require('./dataStr');
async function getImageUrls() {
const $ = cheerio.load(str)
let imageUrls = [];
$('img').each((index, element) => {
const imgSrc = $(element).attr('src');
if (/^https/.test(imgSrc)) {
imageUrls.push(imgSrc);
} else if (/^\//.test(imgSrc)) {
imageUrls.push(`https:${imgSrc}`);
}
});
return imageUrls;
}
const sleep = time => {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve();
}, time);
})
}
async function test() {
try {
const urls = await getImageUrls();
console.log('urls', urls)
if (urls !== null) {
for (let i = 0; i < urls.length; i++) {
const fileName = `image_${i}.gif`;
const filePath = path.join('./images2', fileName);
await sleep(1500)
try {
const response = await axios({
method: 'get',
url: urls[i],
responseType: 'stream'
});
response.data.pipe(fs.createWriteStream(filePath));
console.log(`Successfully downloaded ${fileName}`);
} catch (error) {
console.log(`Failed to download ${fileName}: ${error}`);
}
}
}
} catch (error) {
console.log(error);
}
}
test();