官方文档:Puppeteer
今天大概介绍一下我项目用到的puppeteer操作:
// 启动浏览器 const browser = await puppeteer.launch({ executablePath: 'xxxx', // 这里可以替换Chromium or Chrome的可执行文件,代替安装puppeteer附带的chrome args: [ '--disabled-gpu', // 正常服务器连显卡都没有 '--no-sandbox', // 非沙箱模式 ] }) // 打开页面 const page = await browser.newPage(); await page.goto('file://xxxx/index.html'); // 设置页面viewport大小为5页A4的大小 const unitPX = 37.7813, pageSize = 5; await page.setViewport({ Math.ceil(unitPX * 21), height: Math.ceil(unitPX * 29.7 * pageSize) }) // 截图,获得的res是pdf的二进制数据 // koa的话,这样输出: // ctx.set('Content-Disposition', 'attachment; filename="index.pdf"'); // ctx.body = res // preferCSSPageSize:true 按照css来渲染大小,不自动缩放 const res = await page.pdf({ preferCSSPageSize: true }); // 到浏览器的上下文去执行一些脚本,并且获取最终返回的结果 const textList = page.evaluate(selector => { let domList = document.querySelectorAll(selector); return [...domList].map(txt => txt.innerText) }, '#wrapper .text')
上面的操作其实已经可以完成相当一部分任务了!其他api看官方文档查询