手动下载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 相关文章推荐
页面中body onload 和 window.onload 冲突的问题的解决
Jul 01 Javascript
基于jquery的实现简单的表格中增加或删除下一行
Aug 01 Javascript
ToolTips JQEURY插件之简洁小提示框效果
Nov 19 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
Mar 14 Javascript
Jquery Validate 正则表达式实用验证代码大全
Aug 23 Javascript
浅谈javascript构造函数与实例化对象
Jun 22 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
Sep 01 Javascript
Bootstrap框架实现广告轮播效果
Nov 28 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
May 26 jQuery
vue 父组件中调用子组件函数的方法
Jun 06 Javascript
JS实现可用滑块滑动的缓动图代码
Sep 01 Javascript
JavaScript中变量提升机制示例详解
Dec 27 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
把77A收信机改造成收音机
2021/03/02 无线电
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
js change,propertychange,input事件小议
2011/12/20 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
Vue表单验证插件的制作过程
2017/04/01 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
python中dict使用方法详解
2019/07/17 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
python实现三壶谜题的示例详解
2020/11/02 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
汽车驾驶求职信
2013/10/25 职场文书
原材料检验岗位职责
2014/03/15 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
2015年党小组工作总结
2015/05/26 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
html实现弹窗的实例
2021/06/09 HTML / CSS
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang