手动下载Chrome并解决puppeteer无法使用问题


Posted in Javascript onNovember 12, 2018

因为网络原因,国内安装 puppeteer 的时候会报网络超时。这里使用 puppeteer-core 之后使用手动下载的 Chrome 进行操作。思路很简单,安装一个不带浏览器的 puppeteer ,再使用的时候将浏览器地址指向一个可执行的 Chrome 浏览器文件。

安装

安装 puppeteer-core

yarn add puppeteer-core

找到 puppeteer 中对应的浏览器并下载

node_modules/puppeteer-core/lib/BrowserFetcher.js 中找到各平台 Chrome 下载地址。其中 %s 替换为 DEFAULT_DOWNLOAD_HOST 的值, %d 替换为版本号。

手动下载Chrome并解决puppeteer无法使用问题

node_modules/puppeteer-core/packages.json 中找到版本号

手动下载Chrome并解决puppeteer无法使用问题

替换后得到下载地址

https://storage.googleapis.com/chromium-browser-snapshots/Mac/579032/chrome-mac.zip

下载后解压,放在项目目录中,这里我放在 chrome 下。

使用

这样就可以使用了。

使用代码

const puppeteer = require('puppeteer-core');
const path = require('path');

(async () => {
 const browser = await puppeteer.launch({
  // 这里注意路径指向可执行的浏览器。
  // 各平台路径可以在 node_modules/puppeteer-core/lib/BrowserFetcher.js 中找到
  // Mac 为 '下载文件解压路径/Chromium.app/Contents/MacOS/Chromium'
  // Linux 为 '下载文件解压路径/chrome'
  // Windows 为 '下载文件解压路径/chrome.exe'
  executablePath: path.resolve('./chrome/Chromium.app/Contents/MacOS/Chromium')
 });
 const page = await browser.newPage();
 await page.setViewport({
  width: 375,
  height: 667,
  deviceScaleFactor: 1,
  isMobile: true
 })
 await page.goto('https://marxjiao.com/');
 await page.screenshot({path: 'marx-blog.png'});
 await browser.close();
})();

执行文件

node index.js

执行后可看到,图片已经截图出来了

手动下载Chrome并解决puppeteer无法使用问题

代码地址:https://github.com/MarxJiao/puppeteer-test

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
接收键盘指令的脚本
Jun 26 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
Oct 24 Javascript
JavaScript禁止页面操作的示例代码
Dec 17 Javascript
脚本合并提升javascript性能示例
Feb 24 Javascript
JQuery插件Marquee.js实现无缝滚动效果
Apr 26 Javascript
浅析上传头像示例及其注意事项
Dec 14 Javascript
JS中使用media实现响应式布局
Aug 04 Javascript
vue将单页面改造成多页面应用的方法
Nov 25 Javascript
axios实现文件上传并获取进度
Mar 25 Javascript
Vue组件间的通信pubsub-js实现步骤解析
Mar 11 Javascript
JavaScript 链表定义与使用方法示例
Apr 28 Javascript
精读《Vue3.0 Function API》
May 20 Javascript
vue elementui form表单验证的实现
Nov 11 #Javascript
跨域请求两种方法 jsonp和cors的实现
Nov 11 #Javascript
浅谈webpack+react多页面开发终极架构
Nov 11 #Javascript
Vue项目引进ElementUI组件的方法
Nov 11 #Javascript
webpack中如何使用雪碧图的示例代码
Nov 11 #Javascript
vue组件从开发到发布的实现步骤
Nov 11 #Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
Nov 11 #Javascript
You might like
晶体管来复再生式二管收音机
2021/03/02 无线电
PHP实现合并discuz用户
2015/08/05 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
深入理解javascript学习笔记(一) 编写高质量代码
2012/08/09 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
如何在Python中编写并发程序
2016/02/27 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
C#实现启动一个进程
2016/10/01 面试题
11月升旗仪式讲话稿
2014/02/15 职场文书
高中生操行评语大全
2014/04/25 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
欢迎家长标语
2014/10/08 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
大学生受助感言
2015/08/01 职场文书
python删除csv文件的行列
2021/04/06 Python
在Django中使用MQTT的方法
2021/05/10 Python
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏