0x01:Google Puppeteer开发笔记【起步】

2018-06-05 14:58
Puppeteer是一个基于DevTools协议的高级API来控制无头的Chrome或者Chromium的Node库。当然,也可以通过配置使用完整(无头)Chrome或者Chromium。
简单来说, Puppeteer就是一个用JavaScript代码来控制Chrome的一切(包括但不局限于打开特定网页、网页截图、导出为PDF、控制台审查元素、自动提交表单、登录、点击、输入等等。)。因此,Puppeteer特别适合网页爬虫(包括但不局限于传统网页和SPA单页应用)和自动化测试。

环境说明

Node版本不低于6.4.0, 如果使用ES2017的 async/await语法,则 Node版本不低于7.6。

安装

        
        npm i puppeteer
        # or "cnpm i puppeteer" //如果安装了cnpm的话
        # or "yarn add puppeteer"
        # 整个过程稍微会花点时间,因为默认会安装Chromium
        
        

初体验

        
        //start.js
        const puppeteer = require('puppeteer'); //引入puppeteer
        //定义scrape函数
        const scrape = async () => {
          const browser = await puppeteer.launch(); //实例化browser
          const page = await browser.newPage(); //打开Chrome新标签页
          await page.goto('http://sf.com'); //打开网址
          await page.screenshot({path: 'sf.png'}); //截图并保存网页镜像
          await page.pdf({path: 'sf.pdf', format: 'A4'}); //将网页保存为PDF格式,大小为A4纸张大小
          await browser.close(); //关闭浏览器
        }; 
        const puppeteer = require('puppeteer');
        //运行scrape
        scrape();
        
        

终端运行 node start

          
          node start.js
          
          

运行结果

会在当前start.js所在目录下生成一个sf.png图片文件和sf.pdf文档文件

总结

Puppeteer还是和传统爬网页源代码的爬虫方式不一样,Puppeteer面向的是浏览器端渲染后的HTML DOM树爬虫,所以不受网页接口影响。特别是在SAP应用盛行的今天或许对你有用。