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 或以上。

初始化项目

  1. 新建目录
$ mkdir puppeteer-demo
$ cd puppeteer-demo
复制代码
  1. 初始化项目
$ npm init
复制代码
  1. 安装 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.


  1. 运行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安装就踩坑-解决篇相关推荐

  1. [转载] python3安装superset踩坑解决过程

    参考链接: Python中的issuperset 1 创建虚拟环境 conda create -n superset python=3.6 activate superset #deactivate ...

  2. cmd命令安装composer踩坑

    cmd命令安装composer踩坑 很多童鞋在依照composer官网 官网教程 用命令行安装composer时回踩到以下坑,却不知道如何解决 在此我分享下自己的经验,写个不好请多海涵 打开命令行执行 ...

  3. GPCC安装以及踩坑经历

    gpcc安装以及踩坑经历 官方下载地址文档 https://network.pivotal.io/products/pivotal-gpdb#/releases/29190 安装开始之前 chown ...

  4. mac的angular/cli安装及踩坑记录

    一.angular/cli的安装 step1:node+npm安装 首先使用node -v命令查看mac是否已安装node与npm(如已安装则跳过) node -v npm -v 安装Node.js ...

  5. ubuntu 20.04 安装软件踩坑

    ubuntu 20.04 安装软件踩坑 1.搜狗输入法 安装后需要重启一次 重启后讲sogoupinyin添加好,右上角如果没有搜狗就再重启一下 右上角出现了搜狗也是打不出中文的,因为没有安装依赖 安 ...

  6. Manjaro 安装配置踩坑

    Manjaro 安装配置踩坑 其实manjaro和arch的英文社区上都讲的很清楚, 推荐看英文原版资料. 制作USB安装器 参考资料 : Manjaro 官方User Guide 官网下载镜像 Li ...

  7. 安装 JupyterHub 踩坑指南 —— 如何通过 JupyterHub 实现多用户管理

    安装 JupyterHub 踩坑指南 JupyterHub 简介 Jupyter Notebook and JupyterLab Jupyter Notebook 简介 JupyterLab 简介 安 ...

  8. POI导出Excel设置背景色踩坑,解决背景色全黑(无效)的问题及指定列添加背景色,自定义颜色

    POI导出Excel设置背景色踩坑,解决背景色全黑的问题及指定列添加背景色,自定义颜色 一.自定义颜色 二.背景色全黑(无效)的问题解决![在这里插入图片描述](https://img-blog.cs ...

  9. 7代cpu能装虚拟xp系统吗_Intel 10代PC/笔记本安装Win7踩坑记 amp; 驱动分享

    免责声明:本文只是从技术角度进行讨论,主要因我自己的兴趣而引发测试.只代表个人观点,与任何组织机构无关. 目录 -  从赛扬G5900"亮机"CPU说起 -  10代Core Wi ...

最新文章

  1. 量子计算机与人脑接口,量子信息科学:量子计算机、隐形传物与人脑量子运算...
  2. 51CTO现已开通二级域名~~~~~
  3. GitHub从入门到精通
  4. IE8 CSS hack
  5. Mybatis 使用的 9 种设计模式,真是太有用了~
  6. boost::json::to_string用法的测试程序
  7. nopCommerce的源代码结构和架构
  8. cookie放在请求头_Web安全:你必须知道的“Cookie安全”
  9. python获取Linux信息
  10. python改变背景颜色_python中绘图时怎么改背景颜色?
  11. java uuid生成算法_Java生成UUID
  12. http://www.cnblogs.com/zxp_9527/archive/2009/05/07/1452253.html
  13. xlsxwriter
  14. Tableau基础 | 维度、度量、蓝色、绿色
  15. 静态网页项目开发基础
  16. npm run dev报错 Class constructor ServeCommand cannot be invoked without new
  17. 微信扫码登陆(JAVA)
  18. 第12周项目2—摩托车继承自行车和机动车
  19. macbook pro 13寸 如何激活1920*1200 HIDPI 使用SwitchResX工具修改,详细教程
  20. WindowsNT下的OpenGL

热门文章

  1. centos 7 ldap php7,centOS更新php7
  2. Lex-BERT:超越FLAT的中文NER模型?
  3. ajax连接云数据库密码,ajax和数据库连接
  4. mysql jdbc批量更新_jdbc批量更新数据
  5. LeetCode:85. 最大矩形
  6. 【业务知识】档案工作流程
  7. 信息系统项目管理师:第4章:项目整体管理与变更管理(2)
  8. 《系统集成项目管理工程师》必背100个知识点-26项目范围管理
  9. Openlayers中使用Overlay实现点击要素显示html内容弹窗并且动态更改弹窗内容
  10. Jenkins中连接Git仓库时提示:error: The requested URL returned error: 401 Unauthorized while accessing