Puppeteer安装完美解决 - 自动从国内镜像下载

首先,谷歌把Chromium支持了Headless,也就是无头浏览器,不用界面直接在CI模式下运行,宣布了phantomjs下岗

几大应用:

  1. 爬虫技术
  2. 前端unit test单元测试,比如结合karma+jasmine这些
  3. UI automation test,web界面自动化测试

然后,谷歌还做了一个Puppeteer,也就是用来操作浏览器的一套接口,可以很方便和Chromium浏览器通讯

但是,安装Puppeteer的时候,需要从谷歌官方网站下载对应操作系统的Chromium,下载经常失败

尽管可以使用手动下载,但毕竟不能自动化,然后就是从淘宝镜像下载,也需要设置环境变量

发现有一个Puppeteer Chromium Resolver ,用来自动解决这些问题:

npm install puppeteer-chromium-resolver --save

安装时,会自动安装Chromium,使用的时候就可以用缓存快速调用了,调用需要使用自定义executablePath

require("puppeteer-chromium-resolver")({
    //hosts: ["https://storage.googleapis.com", "https://npm.taobao.org/mirrors"]
}).then(function (revisionInfo) {
    console.log("Chromium revision installed.");
    revisionInfo.puppeteer.launch({
        headless: false,
        executablePath: revisionInfo.executablePath
    });
});

1,可以自己设置镜像hosts,默认是官方站和阿里镜像,一个下载失败,自动尝试另一个,无缝解决国内国外下载

2,下载默认是保存到user的目录(也可以指定savePath),而不是node_modules,因为node_modules可能随时删除,下次安装需要重新下载,同时,如果有多个项目都要用,那么Chromium也是很大的,300多兆,如果多个太占用空间,存到全局的user目录,只存一个,而且下载一次,就不再下载,方案和phantomjs类似

其他问题:

Puppeteer和Chromium Headless固然是极好的,但目前在一些旧的系统上安装,缺少依赖无法运行,比如在linux centos6,还需要安装依赖才能进行,可能并不是每个人都有权限去安装这些依赖,而phantomjs似乎没有这些依赖问题

依赖可参考:https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md

 

你可能感兴趣的:(Javascript,HTML/CSS,NodeJS,大前端)