本文链接: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 通信。

参考资料:

  1. 用Python做爬虫的各位,不要再用PhantomJS了
  2. 因内部闹矛盾,PhantomJS 宣布封存归档暂停开发
  3. PhantomJS - Scriptable Headless Browser

Puppeteer学习笔记 (1)- 什么是Puppeteer的更多相关文章

  1. Puppeteer学习笔记 (2)- Puppeteer的安装

    本文链接:https://www.cnblogs.com/hchengmx/p/11009849.html 1. node的下载安装 由于puppeteer是nodejs的一个库,所以首先需要安装no ...

  2. puppeteer学习笔记合集

    官方英文版API入口(如果你英文好的话):https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md. 汉化版API入口(网上有 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  6. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  7. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  8. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  9. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

随机推荐

  1. OllyDbg---call和ret指令

    call和ret call指令 cal指令是转移到指定的子程序处,后面紧跟的操作数就是给定的地址. 例如,call 401362表示转移到地址401362处,调用401362处的子程序,当子程序调用完 ...

  2. LC-141andLC-142

    142. 环形链表 II 思路: 设链表共有 a+b 个节点,其中 链表头部到链表入口 有 a 个节点(不计链表入口节点), 链表环 有 b 个节点. 再设两指针分别走了 f,s 步,则有: f = ...

  3. 在容器使用stress指令进行负载压测

    安装stressstress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户 在容器中安装docker容器压测工具 stress #先安装一些基础工具 ...

  4. 微信开发者工具:Cannot read property 'addEventListener' of undefined 报错

    点击右上角详情 有个调试基础库 当前为2.17.0 调为2.14.1 解决 如果对您有帮助,希望对面的你能点赞加评论!拜上! 若有bug还请告知,万分感谢!

  5. gin框架使用【5.路由分组】

    package mainimport ( "github.com/gin-gonic/gin")func main() { router := gin.Default() v1Ro ...

  6. 这个API Hub厉害了,收录了钉钉企业微信等开放Api,还能直接调试

    01 此前时不时会有一些研发小伙伴和我诉苦,说很多企业由于人力财力限制或者需求不强,会直接购买使用第三方的开放API,这样一来, 一则由于开放项目不是量身定制的,寻找自己合适的接口也要搜索调研蛮多时间 ...

  7. 2021.11.03 P6175 无向图的最小环问题

    2021.11.03 P6175 无向图的最小环问题 P6175 无向图的最小环问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 给定一张无向图,求图中一个至少包含 33 ...

  8. 解决Mapper.xml文件中sql标签第一个字段报错

    在文件标头的http后边补上www 下边代码仅第4行有变动 原文件: <?xml version="1.0" encoding="UTF-8"?> ...

  9. JavaScript函数中的arguments对象

    ECMAScript标准中,每个函数都有一个特殊的内置对象arguments.arguments对象是一个类Array对象(object),用以保存函数接收到的实参副本. 一.内置特性 说它是一个内置 ...

  10. Python装饰器:套层壳我变得更强了

    Python装饰器:套层壳我变得更强了 Python装饰器:套层壳我变得更强了 关于作用域和闭包可以聊点什么? 什么是作用域 什么是闭包 装饰器:套层壳我变得更强了 参考资料 昨天阅读了<Pyt ...