手动下载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 相关文章推荐
javascript 页面划词搜索JS
Sep 28 Javascript
10个实用的脚本代码工具
May 04 Javascript
jQuery实现用方向键控制层的上下左右移动
Jan 13 Javascript
ajax与302响应代码测试
Oct 23 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
Apr 10 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
Feb 26 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
Nov 25 Javascript
完全深入学习Bootstrap表单
Nov 28 Javascript
js使用highlight.js高亮你的代码
Aug 18 Javascript
vue+iview写个弹框的示例代码
Dec 05 Javascript
微信小程序实现登录注册tab切换效果
Dec 29 Javascript
Windows下安装 node 的版本控制工具 nvm
Feb 06 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
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
PHP session有效期session.gc_maxlifetime
2011/04/20 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
php strrpos()与strripos()函数
2013/08/31 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
vue写h5页面的方法总结
2019/02/12 Javascript
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
微信内置浏览器图片查看器的代码实例
2019/10/08 Javascript
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
python cs架构实现简单文件传输
2020/03/20 Python
Django操作session 的方法
2020/03/09 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
如何利用python进行时间序列分析
2020/08/04 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
销售人员自我评价怎么写
2013/09/19 职场文书
中学图书馆工作总结
2015/08/11 职场文书
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技