手动下载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 相关文章推荐
返回对象在当前级别中是第几个元素的实现代码
Jan 20 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
Apr 24 Javascript
js螺旋动画效果的具体实例
Nov 15 Javascript
初识SmartJS - AOP三剑客
Jun 08 Javascript
javascript生成大小写字母
Jul 03 Javascript
javascript jquery对form元素的常见操作详解
Jun 12 Javascript
JavaScript面向对象分层思维全面解析
Nov 22 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
Aug 16 Javascript
解决js ajax同步请求造成浏览器假死的问题
Jan 18 Javascript
React学习笔记之高阶组件应用
Jun 02 Javascript
Vue2.0点击切换类名改变样式的方法
Aug 22 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/03 冲泡冲煮
php实现的在线人员函数库
2008/04/09 PHP
php whois查询API制作方法
2011/06/23 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
Python实现简单HTML表格解析的方法
2015/06/15 Python
深入理解Python变量与常量
2016/06/02 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
浅谈Python 函数式编程
2020/06/20 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
2020/04/08 HTML / CSS
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
软件测试常见笔试题
2012/02/04 面试题
庆元旦广播稿
2014/02/10 职场文书
驾驶员培训方案
2014/05/01 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
环卫工作个人总结
2015/03/04 职场文书
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js
python数据处理之Pandas类型转换
2022/04/28 Python