axios 图像无法刮入 puppet 师

2guxujil  于 2023-10-18  发布在  iOS
关注(0)|答案(1)|浏览(150)

我试图保存所有图像在整个网页加载时,我用 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}`);
      }
    }
ljo96ir5

ljo96ir51#

你没有得到图像,因为href只包含url部分,像media/cache/2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg,所以通过访问它没有数据可以接收。
要解决此问题,您应该将基本URL添加到axios.get

const url = "https://books.toscrape.com/";

// your code

let imageResponse = await axios.get(`${url}${imageUrl}`, {responseType: 'arraybuffer'});

// your other code

相关问题