puppetter安装就踩坑-解决篇
PUPPETEER概述
Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome。
Puppeteer 是 Google Chrome 团队官方的无界面(Headless)Chrome 工具。正因为这个官方声明,许多业内自动化测试库都已经停止维护,包括 PhantomJS。Selenium IDE for Firefox 项目也因为缺乏维护者而终止。
puppetter可以生成页面的截图和PDF,抓取SSR,抓取网站内容,模拟登陆等。puppetter可以做这么多少玩的事情,我开始跃跃试试,重新写一套爬虫。开始行动!
安装
Puppeteer 要求使用 Node v6.4.0,但因为文中大量使用 async/await,需要 Node v7.6.0 或以上。
初始化项目
- 新建目录
$ mkdir puppeteer-demo
$ cd puppeteer-demo
复制代码
- 初始化项目
$ npm init
复制代码
- 安装 Puppeteer。
由于 Puppeteer并不是稳定的版本而且每天都在更新,所以如果你想要最新的功能可以直接通过 GitHub 的仓库安装。
$ npm i --save puppeteer
复制代码
安装时可能会出现以下报错:
ERROR: Failed to download Chromium r588429! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.
复制代码
Chromium浏览器有58M左右,可能会出现安装失败的情况。
解决方法一:
vi .npmrctype puppeteer_download_host = https://npm.taobao.org/mirrorsyarn add puppeteer -D
复制代码
代理puppeteer下载地址
解决方法二:官方建议设置环境变量 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD
忽略浏览器的下载
env PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm i puppeteer -D
复制代码
引申一下~
环境变量
Puppeteer 寻找某些环境变量来帮助其操作。 如果 puppeteer 在环境中没有找到它们,这些变量的小写变体将从 npm 配置 中使用。
- HTTP_PROXY, HTTPS_PROXY, NO_PROXY - 定义用于下载和运行 Chromium 的 HTTP 代理设置。
- PUPPETEER_SKIP_CHROMIUM_DOWNLOAD - 请勿在安装步骤中下载绑定的 Chromium。 PUPPETEER_DOWNLOAD_HOST - 覆盖用于下载 Chromium 的 URL 的主机部分。
- PUPPETEER_CHROMIUM_REVISION - 在安装步骤中指定一个你喜欢 puppeteer 使用的特定版本的 Chromium。
引申结束~
忽略了Chromium浏览器下载后,我们成功下载好了puppeteer。然后去找puppeteer安装包package.json中对应的chrome版本。(puppeteer/package.json->puppeteer.chromium_revision,具体见lib/Downloader.js
)
这里的依赖chromium版本是588429,
接着去官网手动下载Chromium文件,下载地址:npm.taobao.org/mirrors/chr… 解压后放在本地
在项目中引入Chromium文件
一、直接放在puppeteer默认读取目录下
例如:node_modules\puppeteer.local-chromium\win64-526987(系统类型-版本号)\chrome-win32(下载的文件名)\
二、放在其他目录
我将Chromium文件直接放在项目目录puppeteer-demo下,运行时需要使用puppeteer.executablePath()设置路径参数
const pathToExtension = require('path').join(__dirname, 'chrome-mac/Chromium.app/Contents/MacOS/Chromium');puppeteer.launch({executablePath: pathToExtension});
复制代码
puppeteer.executablePath()
returns: A path where Puppeteer expects to find bundled Chromium. Chromium might not exist there if the download was skipped with PUPPETEER_SKIP_CHROMIUM_DOWNLOAD.
- 运行Puppeteer
新建screenShot.js,引入puppeteer包然后配置Chromium启动路径。 调用puppeteer.launch
方法启动Chromium。
这里需要提醒注意申明的函数是一个async函数,使用了ES 2017 async/await
特性。该函数是一个异步函数,会返回一个Promise。如果async最终顺利返回值,Promise则可以顺利reslove,得到结果;否则将会reject一个错误。
因为我们使用了async函数,我们使用await来暂停函数的执行,直到Promise返回一个browser对象。
const puppeteer = require('puppeteer');(async () => {const pathToExtension = require('path').join(__dirname, 'chrome-mac/Chromium.app/Contents/MacOS/Chromium');const browser = await puppeteer.launch({headless: false,executablePath: pathToExtension});const page = await browser.newPage();await page.goto('https://www.baidu.com');await page.setViewport({width: 1000, height: 500});await page.screenshot({path: 'example.png'});await browser.close();
})();
复制代码
puppetter安装就踩坑-解决篇相关推荐
- [转载] python3安装superset踩坑解决过程
参考链接: Python中的issuperset 1 创建虚拟环境 conda create -n superset python=3.6 activate superset #deactivate ...
- cmd命令安装composer踩坑
cmd命令安装composer踩坑 很多童鞋在依照composer官网 官网教程 用命令行安装composer时回踩到以下坑,却不知道如何解决 在此我分享下自己的经验,写个不好请多海涵 打开命令行执行 ...
- GPCC安装以及踩坑经历
gpcc安装以及踩坑经历 官方下载地址文档 https://network.pivotal.io/products/pivotal-gpdb#/releases/29190 安装开始之前 chown ...
- mac的angular/cli安装及踩坑记录
一.angular/cli的安装 step1:node+npm安装 首先使用node -v命令查看mac是否已安装node与npm(如已安装则跳过) node -v npm -v 安装Node.js ...
- ubuntu 20.04 安装软件踩坑
ubuntu 20.04 安装软件踩坑 1.搜狗输入法 安装后需要重启一次 重启后讲sogoupinyin添加好,右上角如果没有搜狗就再重启一下 右上角出现了搜狗也是打不出中文的,因为没有安装依赖 安 ...
- Manjaro 安装配置踩坑
Manjaro 安装配置踩坑 其实manjaro和arch的英文社区上都讲的很清楚, 推荐看英文原版资料. 制作USB安装器 参考资料 : Manjaro 官方User Guide 官网下载镜像 Li ...
- 安装 JupyterHub 踩坑指南 —— 如何通过 JupyterHub 实现多用户管理
安装 JupyterHub 踩坑指南 JupyterHub 简介 Jupyter Notebook and JupyterLab Jupyter Notebook 简介 JupyterLab 简介 安 ...
- POI导出Excel设置背景色踩坑,解决背景色全黑(无效)的问题及指定列添加背景色,自定义颜色
POI导出Excel设置背景色踩坑,解决背景色全黑的问题及指定列添加背景色,自定义颜色 一.自定义颜色 二.背景色全黑(无效)的问题解决![在这里插入图片描述](https://img-blog.cs ...
- 7代cpu能装虚拟xp系统吗_Intel 10代PC/笔记本安装Win7踩坑记 amp; 驱动分享
免责声明:本文只是从技术角度进行讨论,主要因我自己的兴趣而引发测试.只代表个人观点,与任何组织机构无关. 目录 - 从赛扬G5900"亮机"CPU说起 - 10代Core Wi ...
最新文章
- 量子计算机与人脑接口,量子信息科学:量子计算机、隐形传物与人脑量子运算...
- 51CTO现已开通二级域名~~~~~
- GitHub从入门到精通
- IE8 CSS hack
- Mybatis 使用的 9 种设计模式,真是太有用了~
- boost::json::to_string用法的测试程序
- nopCommerce的源代码结构和架构
- cookie放在请求头_Web安全:你必须知道的“Cookie安全”
- python获取Linux信息
- python改变背景颜色_python中绘图时怎么改背景颜色?
- java uuid生成算法_Java生成UUID
- http://www.cnblogs.com/zxp_9527/archive/2009/05/07/1452253.html
- xlsxwriter
- Tableau基础 | 维度、度量、蓝色、绿色
- 静态网页项目开发基础
- npm run dev报错 Class constructor ServeCommand cannot be invoked without new
- 微信扫码登陆(JAVA)
- 第12周项目2—摩托车继承自行车和机动车
- macbook pro 13寸 如何激活1920*1200 HIDPI 使用SwitchResX工具修改,详细教程
- WindowsNT下的OpenGL
热门文章
- centos 7 ldap php7,centOS更新php7
- Lex-BERT:超越FLAT的中文NER模型?
- ajax连接云数据库密码,ajax和数据库连接
- mysql jdbc批量更新_jdbc批量更新数据
- LeetCode:85. 最大矩形
- 【业务知识】档案工作流程
- 信息系统项目管理师:第4章:项目整体管理与变更管理(2)
- 《系统集成项目管理工程师》必背100个知识点-26项目范围管理
- Openlayers中使用Overlay实现点击要素显示html内容弹窗并且动态更改弹窗内容
- Jenkins中连接Git仓库时提示:error: The requested URL returned error: 401 Unauthorized while accessing