Puppeteer学习笔记 (1)- 什么是Puppeteer
本文链接:https://www.cnblogs.com/hchengmx/p/11006263.html
1. phantomjs介绍
在介绍puppeteer之前必须介绍一下phantomjs,phantomjs是一个可以用JavaScript编程的无头浏览器,它在后端使用了QtWebKit。
但是根据 https://github.com/ariya/phantomjs/issues/15344
由于缺乏有效的贡献,我将要把这个项目存档。
要是将来的某一天,要是我们想要重新开发spantomjs,我们会重新运行它。
PhantomJS版本2.1.1将会是最后一个已知的稳定版本。
2. puppeteer是什么
puppeteer是一个Node库,是由Google官方开发的,它使用了 DevTools协议,提供了强大的api来控制 headless 的chrome或者Chromium。它也可以设置为控制完整的(非headless模式)的chrome或者Chromium。
3. puppeteer可以做什么
- 为每个页面生成截图和PDF;
- 抓取网页内容,也就是我们所说的爬虫;
- 自动化表单的提交,UI测试,键盘输入等;
- 创建最新的自动化测试环境。使用最新的JavaScript和浏览器功能直接在最新版本的Chrome中运行测试;
- 为你的网站创建一个 timeline trace,协助你诊断性能问题;
- 测试Chrome的Extensions;
4. puppeteer和puppeteer-core
自1.7.0版本以来,Chrome官方都会发布一个 puppeteer-core 包,于 puppeteer的主要区别是,这个包默认不会下载 Chromium,更多区别可见 这里。
5. puppeteer组织架构
根据puppeteer官方的说明,目前puppeteer的组织架构如下。

- puppeteer 通过 DevTools协议 与浏览器进行通信。
- Browser 实例可以有多个BrowserContext。
- BrowserContext 定义了一个浏览器session,她可以拥有多个页面。
- Page 至少拥有一个frame:main frame。。还可以有iframe或者frame创建的其他frames。
- Frame 至少有一个 execution context(执行上下文)
- Worker 拥有一个单独的 execution context(执行上下文),与 WebWorkers 通信。
参考资料:
Puppeteer学习笔记 (1)- 什么是Puppeteer的更多相关文章
- Puppeteer学习笔记 (2)- Puppeteer的安装
本文链接:https://www.cnblogs.com/hchengmx/p/11009849.html 1. node的下载安装 由于puppeteer是nodejs的一个库,所以首先需要安装no ...
- puppeteer学习笔记合集
官方英文版API入口(如果你英文好的话):https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md. 汉化版API入口(网上有 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
随机推荐
- tkinter GUI编程
tkinter编程概述 tkinter模块包含在Python的基本安装包中.使用tkinter模块编写的GUI程序是跨平台的.可在windows.UNIX.Linux以及Macintonsh OS X ...
- SpringMVC-组件分析之视图解析器(prefix,suffix)
SpringMVC的默认组件都是在DispatcherServlet.properties配置文件中配置的: spring-webmvc->org/springframewrok/web/ser ...
- 更改docker默认的data,metadata存储大小(实操)
为什么要更改 data,metadata呢?我们运行环境中涉及大量数据操作,数据增长有时候很快,由于之前规划不足,所以磁盘很快达到瓶颈需要进行重新部署.这就需要调整原来的一些docker配置.操作系统 ...
- Mysql 8 使用过程中的命令记录
Mysql 8 使用过程中的命令记录 注: 当前 MySQL 数据库的版本 8.0.27 修改密码 1. 使用其他用户修改root 密码 ALTER USER 'root'@'localhost' I ...
- 在UnityUI中绘制线状统计图2.0
##在之前的基础上添加横纵坐标 上一期在这里:https://www.cnblogs.com/AlphaIcarus/p/16123434.html 先分别创建横纵坐标点的模板,将这两个Text放在G ...
- 《手写Mybatis》第4章:Mapper XML的解析和注册使用
作者:小傅哥 系列:https://bugstack.cn/md/spring/develop-mybatis/2022-03-20-%E7%AC%AC1%E7%AB%A0%EF%BC%9A%E5%B ...
- Java语言学习day38--8月13日
###11哈希表的数据结构 A:哈希表的数据结构:(参见图解) 加载因子:表中填入的记录数/哈希表的长度 例如: 加载因子是0.75 代表: 数组中的16个位置,其中存入16*0.75=12个元素 如 ...
- python相关知识理解
Python3 基础了解 编码 Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串 # -*- coding: cp-1252 -*- 标识符 · 第一个字符 ...
- python学习-Day34
目录 今日内容详细 作业讲解 客户端 服务端 UDP协议 实现 服务器端 客户端 基于UDP实现简易版本的qq 客户端 服务器端 操作系统的发展史 第一代计算机(1940~1955) 第二代就算机(1 ...
- 【ACM程序设计】差分
差分 假设有一个数列,我们需要对数列中的一个区间加上或减去一个值,直接想到的便是对该区间进行一次循环逐项加减. 但是当请求的操作变得非常多的时候,每次请求都进行一次循环会很容易爆时间,因此我们引入了差 ...