惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
I
InfoQ
Jina AI
Jina AI
Martin Fowler
Martin Fowler
Recent Announcements
Recent Announcements
量子位
月光博客
月光博客
罗磊的独立博客
雷峰网
雷峰网
The Cloudflare Blog
V
V2EX
小众软件
小众软件
人人都是产品经理
人人都是产品经理
博客园 - Franky
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题

晚花行乐

马克卡尼在2026年达沃斯论坛上的讲话(阅读材料) | 晚花行乐 鸡娃如何用力才是恰到好处 | 晚花行乐 读万卷书,行万里路的辩证关系 | 晚花行乐 反对培训机构掐尖招生 | 晚花行乐 小泽和建国会谈最后10分钟全文(阅读材料) | 晚花行乐 来看看 DeepSeek 怎么鸡娃 | 晚花行乐 谈谈基本功 | 晚花行乐 惠普 ProDesk SFF PC 各系列参数对比 | 晚花行乐 解决瘦客户机上安装 Debian 12 启动失败问题 | 晚花行乐 意拾喻言:老外写的文言文 | 晚花行乐 笠翁对韵中的典故(十三元) | 晚花行乐 谈谈中考取消四小门 | 晚花行乐 亚马逊云科技产品免费试用攻略(3) - 对象存储服务 | 晚花行乐 在 Windows 10 LTSC 版本上安装 WSL2 | 晚花行乐 Debian 12 的常用配置项 | 晚花行乐 在 Debian 12 上安装 Nvidia 显卡驱动程序 | 晚花行乐 解决 Debian 12 关机失败问题 | 晚花行乐 解决 VS Code 自动更新版本后卡在连接界面 | 晚花行乐 观看巴黎奥运会有感 | 晚花行乐 在 Windows10 上安装惠普旧打印机驱动程序 | 晚花行乐 欢迎关注公众号:晚花行乐 | 晚花行乐 如何编写拼写检查器 | 晚花行乐 亚马逊云科技产品免费试用攻略(2) - 云服务器 | 晚花行乐 Pandas 中 axis 参数的理解(附实例) | 晚花行乐 我打算命个名,叫什么什么 Manager | 晚花行乐 上海武康路历史建筑一览 | 晚花行乐 Python 实现简单的数学表达式解析并处理 | 晚花行乐 观看马拉松的感悟 | 晚花行乐 Python 保存 Cookies 到文件并再次读取 | 晚花行乐 如何为 Hugo 静态网站添加评论功能 | 晚花行乐
用 Puppeteer 截图 | 晚花行乐
2019-04-24 · via 晚花行乐

按照 《Puppteer 配置浏览器属性》一文配置浏览器后,启动浏览器并打开网页,第一件可以自动完成的事情就是截图。 本文详细讨论截图的一些细节操作。

基本代码框架

本文介绍的函数,将基于下面的代码。这段代码实现了一个启动浏览器、并打开指定的网页的过程:

async function () {

  const url = 'https://www.baidu.com'
  const width = 1600
  const height = 900
  let browser = await puppeteer.launch({
			headless: false, 
			ignoreHTTPSErrors: true,
			slowMo: 100,
			args: [
            '--no-sandbox',
            '--disable-setuid-sandbox',
            `--window-size=${width},${height}`
        ]
  })

  let page = await browser.newPage()
  await page.goto(url)
}

截图的内容

可以针对页面或者某一个页面元素截图,分别使用 page.screenshot() 函数 和 elementHandle.screenshot()函数。下面首先介绍针对页面的截图。

页面截图

可以保存为 jpeg、png、pdf 三种格式。前两种图片格式,可以直接体现在保存的文件名里:

await page.screenshot({path: 'homepage.png'}) 
await page.screenshot({path: 'homepage.jpeg'}) 

因为 pdf 文件格式的可配置项很多,为了得到 pdf 格式,需要调用 另一个 pdf 函数

await page.pdf({path: 'homepage.pdf'}) 

这三种截图文件格式,如果不指定 path 参数,将不会写入文件。

如果截得的是 jpeg 格式,还能指定文件的压缩质量,从0~100不等,100是最高质量。

await page.screenshot({
         path: 'homepage.jpeg',
         quality: 99
}) 

页面滚动截图

默认截图得到的是视口内的页面,如果希望实现一边拖动滚动条,一边截图,一直得到完整的页面截图,需要令 fullPage 参数为 true

await page.screenshot({
         path: 'homepage.png',
         fullPage: true
}) 

页面元素截图

还可以针对某个特定元素截图,可以用来特别关注某个关键的页面元素的外观。具体方法是首先获得 该元素的引用,再调用 screenshot 函数

let logo = await page.waitForSelector('#lg')

await logo.screenshot({
         path: 'homepage.png'
}) 

一个可用的版本

async function () {

  const url = 'https://www.baidu.com'
  const width = 1600
  const height = 900
  let browser = await puppeteer.launch({
			headless: false, 
			ignoreHTTPSErrors: true,
			slowMo: 100,
			args: [
            '--no-sandbox',
            '--disable-setuid-sandbox',
            `--window-size=${width},${height}`
        ]
  })

  let page = await browser.newPage()
  await page.goto(url)
  let logo = await page.waitForSelector('#lg')

  await logo.screenshot({
         path: 'homepage.png'
  }) 
}

各位读后有什么想法,请在下方留言吧!如果对本文有疑问或者寻求合作,欢迎 联系邮箱邮箱已到剪贴板

精彩评论