我试图保存所有图像在整个网页加载时,我用 puppet 抓取数据,但当我试图抓取图像和保存它到文件夹只有URL正在打印在控制台和没有图像下载
let aa = await page.$$('img[src]');
let arr = [];
for (let i of aa) {
let evawl = await page.evaluate((el) => el.getAttribute('src'), i);
arr.push(evawl);
console.log(evawl);
}
let folderpath = path.join(__dirname, 'img');
try {
fs.mkdir(folderpath);
} catch (err) {
if (err.code !== 'EEXIST') {
throw err;
}
}
for (let imageUrl of arr) {
try {
let imageResponse = await axios.get(imageUrl, { responseType: 'arraybuffer' });
let imageName = imageUrl.split('/').pop();
let imagePath = path.join(folderpath, imageName);
fs.writeFileSync(imagePath, imageResponse.data);
console.log(`Downloaded: ${imageUrl}`);
} catch (err) {
console.error(`Error downloading ${imageUrl}: ${err.message}`);
}
}
1条答案
按热度按时间ljo96ir51#
你没有得到图像,因为href只包含url部分,像
media/cache/2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg
,所以通过访问它没有数据可以接收。要解决此问题,您应该将基本URL添加到
axios.get
。