puppteer的使用

官方文档:Puppeteercss

今天大概介绍一下我项目用到的puppeteer操做:html

// 启动浏览器
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({ width: 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看官方文档查询chrome

相关文章
相关标签/搜索