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将此作为正确答案。
我有一个 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将此作为正确答案。