木偶 Puppeteer 更友好的 Headless Chrome Node API 木偶也是有心的 (=・ω・=) Puppeteer是什么? 你可以通过Puppeteer的提供的api直接控制Chrome模拟大部分用户操作来进行UI Test或者作为爬虫访问页面来收集数据。 为什么会产生Puppeteer呢? 入门 安装Puppeteer npm install puppeteer 或者 yarn add puppeteer Puppeteer至少需要Node v6.4.0,但如果想要使用async / await 默认的页面大小为800x600分辨率,页面的大小可以通过Page.setViewport()来更改 实例二 创建一个PDF const puppeteer = require('puppeteer') = require('puppeteer'); async function getDimension(url) { const browser = await puppeteer.launch
Puppeteer是什么 Puppeteer是一个Node库,它提供了一个高级API来通过DevTools协议控制Chromium或Chrome。 第二种:执行npm i puppeteer-core安装,这种方式仅仅只会安装Puppeteer自己,默认不会下载Chromium(自1.7.0版本以后会发布一个puppeteer-core包)。 // 采用`npm i puppeteer`安装时,可以加载`puppeteer`模块 // const puppeteer = require('puppeteer'); // 采用`npm i puppeteer-core`安装时,可以加载`puppeteer-core`模块 const puppeteer = require('puppeteer-core'); (async () => { // puppeteer默认打开的浏览器为无头模式 // const browser = await puppeteer.launch(); // 通过参数明确指定puppeteer
代码 const puppeteer = require('puppeteer') const path = require('path') puppeteer.launch({ headless: test.png 参考资料 https://zhaoqize.github.io/puppeteer-api-zh_CN/#? product=Puppeteer&version=v2.0.0&show=api-elementhandleuploadfilefilepaths https://zhaoqize.github.io /puppeteer-api-zh_CN/#? product=Puppeteer&version=v2.0.0&show=api-pagewaitforselectorselector-options https://zhuanlan.zhihu.com
在安装puppeteer过程中遇到一些错误,记录一下 首先可能遇到node install.js错误,可以使用一下命令参数安装puppeteer npm i --save puppeteer --ignore-scripts 或者先执行一下命令再安装puppeteer npm config set unsafe-perm true npm i puppeteer 其次可能会遇到各种库没有安装的错误,比如libX11-xcb.so ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget 还有sandbox 问题,可以尝试在无沙箱模式下运行puppeteer const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']}); npm config
puppeteer https://pptr.dev/ 启动浏览器 const browser = await puppeteer.launch({ headless: true
Puppeteer 的作用 理论上我们在 Chrome 里能做的事情,通过 puppeteer 都能够做到。 安装 Puppeteer npm i puppeteer 或 yarn add puppeteer 安装 puppeteer 的过程中会下载最新版本的 Chromiun (~170MB Mac, ~282MB 我们也可以跳过 Chromium 的下载,或者下载其他版本的 Chromium 到特定路径,这些都可以通过环境变量进行配置 puppeteer-core puppeteer-core 是 puppeteer npm i puppeteer-core 或 yarn add puppeteer-core 使用 puppeteer-core 需要确保它的版本和连接的 Chrome 版本可以兼容。 puppeteer-core 会忽略所有的 PUPPETEER\_* 环境变量 关于 puppeteer 和 puppeteer-core 的详细对比请参考:puppeteer vs puppeteer-core
“ puppeteer recorder 是一款专门为puppeteer提供的插件,用来进行录制” 01—官网插件描述 Chrome extension for recording browser interaction and generating Puppeteer scripts Puppeteer recorder is a Chrome extension that records your browser interactions and generates a Puppeteer script. 3.录制的脚本如下 const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch 执行同样的步骤看下生成的代码 生成代码如下: const puppeteer = require('puppeteer'); const browser = await puppeteer.launch
记录一下这次用docker遇到的一些问题 先提供一个我用的包含puppeteer的docker镜像 puppeteer可以使用Network.emulateNetworkConditions和Emulation.setCPUThrottlingRate 在这里,我主要是利用puppeteer执行一段脚本,然后再从docker容器中,向宿主机post结果回去。 = require('puppeteer'); const fs = require('fs'); (async () => { const browser = await puppeteer.launch 网站性能测试利器:Puppeteer trace.json如何使用 trace.json另一个issue 关于docker stackoverflow名称切换 案例 官方更新历史 官方名称更换历史 = require('puppeteer'); const start = async () => { const browser = await puppeteer.launch({
在环境搭建章节介绍了如何使用puppeteer模块来启动Chromium实例,本篇开始puppeteer的API详细学习计划 本文将主要介绍: puppeteer模块API ▷1◁ ? 请看实例: //初始化puppeteer变量 const puppeteer = require('puppeteer'); //调用puppeteer模块的launch方法 //luanch的options 具体使用情况请看实例: const puppeteer = require('puppeteer'); puppeteer.launch({ executablePath: 'D:\\node_modules 默认是 <root>/.local-chromium, <root> 是 puppeteer 的包根目录。 使用实例: const puppeteer = require('puppeteer'); const BrowserFetcher = puppeteer.createBrowserFetcher(
Deno 牌 Puppeteer,真香! 又双叒叕一堆 deno 的插件开源了,这次他们将目光转向了 puppeteer,deno-puppeteer、puppeteer_deno、deno-puppeteer-adapter…… 基本都是最近一个月诞生的 puppetter-deno 从截图说起 deno puppetter puppeteer是一个Node库,它提供了高级API来通过DevTools协议控制Chrome或Chromium,puppeteer puppeteer常常被用来生成页面的屏幕截图和PDF、实现SSR、自动化测试等等,在业界也有不少企业级的运用,比如有赞商城前端团队使用puppeteer搭建统一海报渲染服务,TCB 的云函数也支持 puppeteer 在Mac上,一小段代码就实现了截取掘金首屏: // mod.ts // 引入 puppeteer import puppeteer from 'https://deno.land/x/pptr/mod.ts
记得前几年,我们通常会用PhantomJs做一下自动化测试,或者为了SEO优化,会用它对SPA页面进行预渲染,现在有更好的Puppeteer来代替它的工作了,性能更好,使用起来也更加方便,Puppeteer const puppeteer = require('puppeteer'); let request = require('request-promise-native'); //使用 puppeteer.launch puppeteer.launch 启动时参数可以动态修改 通过 puppeteer.connect 我们可以远程连接一个 Chrome 实例,部署在不同的机器上 puppeteer.connect 多个页面共用一个 时我们几乎一定会遇到在这两个环境之间交换数据:运行 Puppeteer 的 Node.js 环境和 Puppeteer 操作的页面 Page DOM,理解这两个环境很重要 首先 Puppeteer 提供了很多有用的函数去 实现不同设备的模拟 const puppeteer = require('puppeteer'); const iPhone = puppeteer.devices['iPhone 6']; puppeteer.launch
依据这个思路,我们就想到使用Puppeteer,在介绍Puppeteer之前我们先将这段简单的捕获moji表情的代码放出来。 const puppeteer = require('puppeteer') const request = require('request') const fs = require('fs') async 三、Puppeteer Puppeteer可以做些什么呢?我们从文章开始的一个demo中可以发现,Puppeteer可以爬取页面数据。 1、初探 这是Puppeteer官方提供的一张API分层结构图 从图上我们可以发现,Puppeteer是通过使用Chrome DevTools Protocol(CDP)协议与浏览器进行通信,而Browser 首先,通过puppeteer.launch()创建一个Browser实例 const browser = await puppeteer.launch({ // --remote-debugging-port
Puppeteer 是一个网页的自动化测试工具,它支持写一些 JS 脚本来控制浏览器执行一些行为,可以用来跑测试用例,或者用来做爬虫。 它的脚本类似这样: const puppeteer = require('puppeteer'); const fs = require('fs/promises'); (async () => { 跑起来是这样的: 其实跑这种脚本不需要看到界面,所以 puppeteer 默认是 headless 的,也就是无界面的。 接下来我们尝试自己实现一个简易版 puppeteer 来深入理解它。 这会是一个系列,叫做《手写 Puppeteer》,这是第一集。 为了深入理解它的实现原理,我们会从 0 实现一个 mini puppeteer。
在这篇文章中,我会利用Puppeteer进行网站自动化测试。 index.js const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch index.js const puppeteer = require('puppeteer'); const testPage = require('. index.js const puppeteer = require('puppeteer'); const testPage = require('. 不管你想要研究什么,我希望我已经帮助了你如何用Puppeteer获得结果。这个工具很容易安装。 只要输入npm install puppeteer
记一下使用puppeteer抓取开源中国上的推荐软件数据 1.安装 npm install puppeteer 2.引入 const puppeteer = require('puppeteer') `https://h5.oschina.net`; ;(async () => { console.log('Start visit'); const brower = await puppeteer.launch
Puppeteer 是一个 Node.js 库, 提供了一组封装良好的接口, 使你可以通过 DevTools 协议控制 Chrome. 本文介绍如何在 SCF 中使用 Puppeteer. 一个截图的例子 我们使用官方仓库里的截图例子 const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://example.com') ) => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await 总结 本文介绍了如何解决在 SCF 中运行 Puppeteer 缺少动态链接库的问题.
上篇文章讲解了如何安装puppeteer,这篇文章我们通过几个小案例来了解一下puppeteer的常用api的使用方法。 案例1:截图百度首页,代码如下: const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch 案例2,百度搜索,代码如下: const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false 三个案例讲完了,我们来总结一下 1、首先了解了如何送puppeteer来进行进图 2、如何使用puppeteer来模拟人的行为 3、爬虫入门,通过 page.evaluate函数在page页面中执行js
FUNCTIONS_EXECUTE_FAIL" message: "The "original" argument must be of type function" requestId: "ea04fa07ef75d" 只要在云函数一引入Puppeteer
这时,Puppeteer 就能派上用场了。它是一个 Node.js 库,可以用来操作 Chrome 浏览器。 Puppeteer 中文释义是提线木偶,意思我们可以很方便地通过操纵它来控制浏览器。 安装 Puppeteer 首先,我们需要安装 Puppeteer。 在终端中运行以下命令: npm install puppeteer 注:建议用最新版本的 Node 使用 Puppeteer 爬取网页 让我们来看一个简单的例子。 我们可以通过以下代码来实现: const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch 小结 使用 Puppeteer 可以非常方便地爬取网页并获取所需的数据。当然,我们还可以通过 Puppeteer 来模拟用户的行为,如点击、滚动等操作,从而更加灵活地获取所需的数据。
目前比较火的是无头浏览器是 Google 的 Puppeteer,常用于自动化 UI 测试和截图。Puppeteer 的文档非常详细,可以参考 Puppeteer API。 所以需要一个能够运行 Puppeteer 的 Docker 镜像,虽然官方文档里面提供了在 Docker 里面运行的一些配置,但当初踩了很多坑。 4.1 登录 首先,我们来启动一个 Puppeteer 的浏览器 Browser。 所幸 Puppeteer 提供给了 waitForNavigation 这个 API。 总结 Puppeteer 是一个非常强大的库,在某些场景下会非常方便。等有时间的时候也可以去研究一下 Chrome DevTools 的原理。