Puppeteer 是 Google Chrome 出品的一个 Node 库无头浏览器,提供高级浏览器,提供高级浏览器, API,根据 DevTools Protocol 来调节 Chrome 或 Chromium 。Puppeteer 默认运作为 headless,但可以作为操作配备作为操作 non-headless 。
文章插图
上游服务生产大量帖子爬虫数据,下游服务生产大量帖子爬虫数据 。Puppeteer 服务需要解决这些信息,并将其转化为格式化的文章 。之所以应用 Puppeteer 服务生成标准化文章是因为只有浏览器才能更准确地分析 css,我必须提取关键样式,然后赋予标准化格式,如加厚、加斜、中间、大小字体等 。任务处理较多,QPS 必须达到 50-200 。
什么是无头浏览器?无头浏览器是没有操作界面的浏览器,即使用无头浏览器通过写脚本访问网站,也可以做一些点击 。
Puppeteer 一般采用无头操作,成本较小 。自然也提供了一个完整的应用程序 Chromium/Chrome 来操作的方式 。
Puppeteer 能做什么能够做几乎所有浏览器都能做的事情 。
网页截图,或生成 pdf抓取 SPA 或 SSR 提交网站自动化表单,UI 测试、数字键盘等创建了最新的自动测试环境 。应用最新的自动测试环境 。js 和最新 Chrome 浏览器操作功能测试捕捉网站时间线,协助性能问题检测的确诊 Chrome 插件Puppeteer 与其他无头浏览器有什么区别?Puppeteer 由 Google Chrome 快速、安全、稳定、实用的其他无头浏览器可以支持各种浏览器环境(Safari, Chrome, Firefox 等),而 Puppeteer 只支持 Chromium/ChromePuppeteer 有完善的事物制度,不需要频繁 sleep(1000) Puppeter 调节效果非常强大,也支持在 DevTools 内部调节Puppetererer 可以创建一个「真实」动作,如点击Puppeteer APIPuppeteer 的大多数 API 返回值都是 Promise,故推荐使用 async await 处理异步操作 。Puppeteer 的 API 包括以下类:
类名描述 Puppeteer 主要用于建立浏览器案例,也可用于下载新的浏览器案例 Chromium,或者设置浏览器的默认参数 BrowserFetcher 用于下载和管理 ChromiumBrowser 可以建立一个或多个 PageBrowserContext 在创建隐形模式的浏览器时,需要使用隐形模式 Page 关键 API,用于操作一个页面,后面会详解 Worker 用以解决 WebWorkerKeyboard 能够打开键盘按钮 Mouse 能够打开鼠标动作 TouchScreen 能够打开触摸屏动作 Tracing 用于分析特征 Dialog 存在 page 的 dialog 在事件调整中,显示弹出窗口启用后的目标,包括 alert, beforeunload, confirm 和 promptConsoleMessage 存在于 page 的 console 在事件调整中,表明启用 console.log 等待目标的方式 Frame 常用于解决方案,包括多个 frame 页面 。page 很多方法都是直接调用主 frame 的办法 ExecutionContext 执行上下文存在 frame、浏览器插件,worker 中 。可用于直接实施一段 jsJSHandle 根据 page.evaluateHandle 生成用于生成页面上的页面 handler 挑出传输应用程序 ElementHandle 根据 page.$ 生成,用于使用页面上的某一元素 handler 挑出传输应用程序 Request 在 page.setRequestInterception 应用程序可以处理界面的请求 Response 表示页面接收到的回应 SecurityDetails 显示界面的安全信息 Target 可以是 page, background_page, service_worker, browser 等 CDPSession 用以直接和 Devtools 通讯 Coverage 用以分析 js 和 css 页面应用比例的代码 TimeoutError 超时错误 Page
Page 是 Puppeteer 最重要的一个 API,这也是它的关键,这里将介绍一些常见的 Page API 。
【puppeteer是什么意思 puppeteer是什么】设置页面环境方法名描述 page.emulate 设定 viewport 和 uapage.setViewport 设定 viewportpage.setUserAgent 设定 uapage.setRequestInterception 中断所有请求,可以修改请求的返回值 page.addScriptTag 添加 js 脚本 page.addStyleTag 添加 csspage.setContent 设定整个 htmlpage.setCacheEnabled 是否打开设置缓存 page.setExtraHTTPHeaders 设定额外 http 头 page.setGeolocation 设置位置 page.setJavaScriptEnabled 设定 js 是否打开 page.setOfflineMode 设置离线模式 page.deleteCookie 删掉 cookiespage.setCookie 设定 cookies 模拟动作
一般先将窗口翻转到相应的元素中,再执行动作 。
方法名描述 page.click 点击 page.tap 手指点击 page.focus 聚焦 page.hoverhoverpage.type 内容输入到规定元素中 page.select 选定选项等候方法名描述 page.waitFor 等待某个元素渲染出来,或者函数实现后回到某个函数 true,或直接等待指定时间指定时间 page.waitForSelector 等待某个元素被渲染 page.waitForFunction 等函数实现后再回到某个函数 truepage.waitForNavigation 等待网页跳转 page.waitForRequest 等待某一特定的请求被传出 page.waitForResponse 等待特定请求收到回复执行脚本方法名描述 page.$应用 document.querySelector 获得结果,会回到 ElementHandle,能够传输应用程序 page.$$同上,但采用的是 document.querySelectorAllpage.$eval 将 document.querySelector 结果传达给 pageFunctionpage.$$eval 同上,但是使用的是 document.querySelectorAllpage.evaluate 直接执行脚本 page.evaluateHandle 执行脚本,返回的是 JSHandle,能够传输应用程序 page.evaluateOnNewDocument 再下个 frame 执行脚本 page.exposeFunction 注入函数 window 目标上 page.queryObjects 获得所有属于这一类的对象,能够传输应用网页跳转方法名描述 page.goto 跳转页面 page.close 关掉 page.goBack 倒退 page.goForward 前行 page.reload 更新 page.setDefaultNavigationTimeout 设置网页跳转超时获取内容方法名描述 page.screenshot 截屏 page.pdf 生成 pdfpage.content 获取整个页面内容 page.title 获得页面 titlepage.url 获得页面 urlpage.viewport 获得页面 viewportpage.cookies 获得 cookies 事件名称描述 page.on(‘console’)监听 console.log 等启用 page.on(‘dialog’)监听界面的 alert, beforeunload, confirm 和 prompt 弹窗 page.on(‘load’)载入监控界面 page.on(‘domcontentloaded’)监听页面 dom 加载完成 page.on(‘pageerror’)监控页面错误 page.on(‘request’)监控页面发送的请求 page.on(‘requestfailed’)请求监控失败 page.on(‘requestfinished’)监听完成请求 page.on(‘response’)监控页面接受的回应命名空间
页面下的其他案例可以通过一些命名空间快速访问 。
属性名描述 page.keyboard 浏览界面 Keyboard 目标 page.mouse 浏览界面 Mouse 目标 page.touchscreen 浏览界面 TouchScreen 目标 。
- 立体异构划分为几何异构、旋光异构和构象异构三类 立体异构是什么意思
- 游戏外挂的应用原理及预防 游戏开挂是什么意思
- mers病毒是什么病毒 mers病毒是什么
- 并口硬盘是什么接口 并口硬盘是什么
- 破壁机是什么它又具备了哪些功能 什么是破壁机
- 策划是什么专业 策划是什么
- 可信时间戳是否具有法律效力 可信时间戳是什么意思
- 适用范围是什么 水基型灭火器主要适用于哪里
- 夹缝里的旧时光意思就是在当时有限的时间内,度过的以往的时光 夹缝里的旧时光
- VirtualYouTuber是什么意思 虚拟vtb是什么