▷1◁
puppeteer简介
我们先看下puppeteer的官网的说明
Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. Puppeteer runs headlessby default, but can be configured to run full (non-headless) Chrome or Chromium
puppeteer是一个nodejs的类库,通过devtools协议提供谷歌的chrome或者chromium的控制api,默认通过headless方式控制Chrome,当然puppeteer也支持非headless模式,而且是由谷歌团队维护,再看看github上的star数:https://github.com/GoogleChrome/puppeteer
37139,不用担心它的流行程度,puppeteer通过Javascript来编写脚本,擅长ui自动化测试和爬虫实现!
▷2◁
winodws系统下安装
首先要安装nodejs和npm
安装nodejs,https://nodejs.org/en/download/current/,在nodejs官网下载最新版本
下载完成后双击安装,安装完成后运行cmd命令行查看版本
node -v
证明安装成功
npm安装,安装完node默认会集成npm
查看npm版本
安装puppeteer
npm i puppeteer
如果你可以访问外国网站,安装过程应该是OK的,如果你被墙了,直接安装puppeteer会失败,因为puppeteer的安装过程回去下载chromium,而chromium被墙掉了
chromium的默认下载位置:D:\node_modules\puppeteer\.local-chromium\win64-579032\chrome-win32(每个人的路径不太相同)
▷3◁
实现example.js例子
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://example.com'); await page.screenshot({path: 'example.png'}); await browser.close(); })();
在D:根目录下,保存为example.js
运行node example.js
会在D:根目录生成一个example.png的图片,图片内容为:
在ide上运行,这里我选择的是webstrom(对jerbrains全家桶有偏爱...)
运行结果:
提示找不到chromium,debug一下,添加browserFetcher和revisionInfo到watcher
得到puppeteer默认加载chromium的路径是:
C:\Users\quanh\node_modules\puppeteer\.local-chromium\win64-579032\chrome-win32\chrome.exe
和我们安装puppeteer时默认下载chromium的路径不相符,所以提示找不到
解决方案:查看官网文档,我们的目标是找到修改chromium启动path的方法
制定path后运行:
运行成功:
关于headless模式,默认puppeteer是开启headless模式的,也就是脚本运行过程中,看不到chromium的界面显示
如果要关闭headless模式,也是要在启动项配置,查看官网:
修改脚本:
运行结果:
▷4◁
Mac系统安装
具体步骤参考winodws,对应node版本安装mac版本即可