手动下载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 相关文章推荐
JQuery 小练习(实例代码)
Aug 07 Javascript
利用jQuery 实现GridView异步排序、分页的代码
Feb 06 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
Dec 08 Javascript
jquery取消选择select下拉框示例代码
Feb 22 Javascript
一个JavaScript防止表单重复提交的实例
Oct 21 Javascript
基于jquery实现图片上传本地预览功能
Jan 08 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
May 12 Javascript
动态创建Angular组件实现popup弹窗功能
Sep 15 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
详解VS Code使用之Vue工程配置format代码格式化
Mar 20 Javascript
JS轮播图的实现方法
Aug 24 Javascript
JavaScript 实现下雪特效的示例代码
Sep 09 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实现Mysql读写分离
2013/06/28 PHP
php 购物车完整实现代码
2014/06/05 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
Expandable "Detail" Table Rows
2007/08/29 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
2015/03/10 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
Ajax的优点和缺点
2014/11/21 面试题
灰雀教学反思
2014/04/28 职场文书
应届生求职信范文
2014/05/26 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
遗愿清单观后感
2015/06/09 职场文书
监守自盗观后感
2015/06/10 职场文书
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python