Puppeteer 保存在浏览器中打开的图像

Puppeteer to save image open in the browser

我有一个 link 的 (gif) 图片,通过 'open in new tab' 手动获得。我希望 Puppeteer 打开图像,然后将其保存到文件中。如果在普通浏览器中执行此操作,我会单击右键并从上下文菜单中选择 'save'。有没有简单的方法可以在 Puppeteer 中执行此操作?

在 Puppeteer 中可以右键单击,但无法通过“另存为”菜单自动导航。但是,这里的最佳答案中列出了一个解决方案:

How can I download images on a page using puppeteer?

您可以直接从页面响应将图像写入磁盘。

下面这几行代码会将维基百科图像徽标保存为文件名logo.png

import * as fs from 'fs'
import puppeteer from 'puppeteer'
;(async () => {
    const wikipedia = 'https://www.wikipedia.org/'
    const browser = await puppeteer.launch()
    const page = (await browser.pages())[0]
    const get = await page.goto(wikipedia)
    const image = await page.waitForSelector('img[src][alt="Wikipedia"]')
    const imgURL = await image.evaluate(img => img.getAttribute('src'))
    const pageNew = await browser.newPage()
    const response = await pageNew.goto(wikipedia + imgURL, {timeout: 0, waitUntil: 'networkidle0'})
    const imageBuffer = await response.buffer()
    await fs.promises.writeFile('./logo.png', imageBuffer)
    await page.close()
    await pageNew.close()
    await browser.close()
})()

如果对您有帮助,请select将此作为正确答案。