Puppeteer是Chrome开发团队在2017年发布的一个Node.js包,用来模拟Chrome浏览器的运行。学习Puppeteer之前我们先来了解一下ChromeDevToolProtocol。1.什么是什么是ChromeDevToolProtocolCDP基于WebSocket,利用WebSocket实现与浏览器内核的快速数据通道。我们可以基于CDP封装一些工具对Chrome浏览器进行调试及分析,比如我们常用的“Chrome开发者工具”就是基于CDP实现的。如果你以remote-debugging-port参数启动Chrome,那么就可以看到所有Tab页面的开发者调试前端页面,还会在同一端口上还提供了http服务。通过CDP,可以做到远程控制浏览器的行为和操作。2.Puppeteer是什么是什么Puppeteer是Node.js的一个工具包,也是一个chrome的工具引擎。Puppeteer自身提供了各式各样的接口,接口被调用时,通过ChromeDevToolsProtocol协议控制Chromium/Chrome浏览器的行为。默认情况下是以无界面的方式启动Chrome的,也可以通过参数控制启动有界面的Chrome。Puppeteer默认绑定最新的Chromium版本,也可以自己设置不同版本的绑定。我们不需要了解太多的底层CDP协议实现与浏览器的通信,只需要通过Puppeteer接口API,操作浏览器即可。3.Chromium是什么?和是什么?和Chrome有什么关系?有什么关系?Chromium是谷歌的开源项目,由开源社区维护,拥有诸多尖端优势。拥有超多的版本,并且支持Windows、Mac、Linux等主流平台,更新特别的快,版本迭代迅速。国内很多的浏览器,都是基于Chromium开发的,例如360浏览器、QQ浏览器等。Chrome也是谷歌开发的,基于Chromium的闭源商业浏览器,跨平台多端支持。基本上就是Chromium代表更快更新的开源浏览器,Chrome是谷歌做的闭源商业浏览器。4.Puppeteer的工作原理的工作原理5.Puppeteer的优势的优势完全真实的浏览器操作。可以加载特定版本的Chromium,并且支持所有Chrome特性。Chrome团队维护,迭代迅速,更新更快,拥有更好的兼容性和前景。1headless参数动态配置,调试更为方便,通过–-remote-debugging-port=9222,可以进入调试界面调试。API接口丰富,文档全面,上手成本低,优化项众多,效率极高。支持最新的JS语法,比如async/await等。完备的事件驱动机制,不需要太多的sleep。6.应用场景应用场景完全基于真实浏览器的操作,浏览器能做的,Puppeteer都能做。1.数据导出:报告导出图片、PDF文件,数据生成Excel文件等。2.自动测试:定制化接口测试,模拟用户行为测试。3.定时任务:定时邮件、定时预加载任务等...