如何实现截图
对百度首页进行截图
1 | const puppeteer = require('puppeteer'); |
截图的代码很简单,比如如果我想实现对百度搜索框部分截图怎么做呢,查询page.screenshot api 可以看到其api说明中包含clip 选项,用于设置截图的x,y,width,hegiht.通过查看元素可以看到搜索框部分的form id 为 form 。
基于上面的代码做如下修改
1 | const puppeteer = require('puppeteer'); |
修改后即可完成对百度搜索框的局部截图
但上面的实现有些复杂,我们需要获取位置信息,有没有一种方式针对元素进行截图呢,puppeteer提供了另一个接口ElementHandle.screenshot 方法,该方法参数和page.screenshot 一样。ElementHandle 对象是页面内的Dom对象。
如果使用ElementHandle.screenshot ,我们的代码可以修改为
1 | const puppeteer = require('puppeteer'); |
总结
两种方法可以作如下类比学习:
page.screenshot 如果类比为document.getElementById
ElementHandle.screenshot 就类似domElement.getElementById
PS
今天puppeteer 发布了1.4.0版本主要更新如下:
大的升级:Chromium 68.0.3419.0 (r555668)
API 增加:1、elementHandle.$eval 类似domElement.querySelector(‘selector’) 2、page.browser() 3、target.browser
其它:bug fix 和优化