Puppeteer基本介绍
前言
在本次分享中,我们将学习如何使用JavaScript自动抓取网页。为此,我们将使用Puppeteer。Puppeteer是一个Node库,它提供了丰富的API允许我们控制无头Chrome浏览器。无头Chrome浏览器是一个无需实际运行Chrome浏览器即可运行Chrome浏览器的方法。
-----我们将编写JavaScript代码来自动运行Goole Chrome浏览器.
什么是Chrome DevTool Protocal
- CDP基于WebSocket,利用WebSocket实现与浏览器内核的快速数据通道
- CDP分为多个域(DOM、Debugger、Network、Profile、Console...),每个域都定义了相关的命令和事件
- 我们可以给予CDP封装一些工具对Chrome浏览器进行调试分析,比如我们常用的“Chrome开发者工具”就是基于CDP实现的
- 很多有用的工具都是基于CDP实现的,比如Chrome开发者工具、Puppetteer等
什么是Headless Chrome
- 可以在无界面的环境中运行Chrome
- 通过命令行或者程序语言操作Chrome
- 无需人的干预,运行更稳定
总结:Headless Chrome就是Chrome浏览器的无界面形态,可以在不打开浏览器的前提下,使用所有Chrome支持的特性运行程序
Pupperteer是什么
Pupperteer是一个Node库,它提供了一个高级API通过DevTools协议控制Chromium或Chrome。Puppeteer默认一headless模式运行,但是可以通过修改配置文件运行“有头”模式。
Puppeteer可以做什么?
- 网页截图或生成PDF(可以设置截图的设备、针对页面中某块区域截图或生成PDF)
- 爬取SPA或SSR网站
- UI自动化测试,模拟表单提交、键盘输入、点击等行为
- 捕获网站的时间线,帮助诊断性能问题
- 创建一个时时更新的自动化测试环境。使用最新的JavaScript和浏览器功能直接在最新版本的Chrome中执行测试
- 测试浏览器扩展
Puppeteer API分层结构
Puppeteer中的API分层结构基本和浏览器保存一致,我对常使用到的几个类简单介绍一下:
- Browser:对应一个浏览器实例,一个浏览器可以包含多个BrowserContent
- BrowserContent:对应浏览器一个上下文会话,就像我们打开一个普通的Chrome之后又打开一个隐身模式的浏览器一样,一个BrowserContent可以包含多个Page
- ExecutionContent:是Javascript的执行环境
- ElementHandle:对应DOM的一个元素节点,通过该实例可以实现对元素的点击,填写表单等行为
- Tracing: 抓去性能数据进行分析
- Response:页面收到的响应
- Request: 页面发出的请求
使用Puppeteer进行数据抓取的基本步骤如下:
- 安装Puppeteer库和相关依赖
- 创建一个新的页面,并启动一个浏览器
- 打开一个新的页面(可设置请求头、设置代理、cookie之类的)
- 访问目标网站,并等待页面加载完成
- 使用选择器或XPath定位元素,并获取元素的属性或文本
- 将获取的数据存储到本地文件或数据库中
- 关闭页面和浏览器
最后更新于 2024-04-13 13:40:21 并被添加「」标签,已有 66 位童鞋阅读过。
此处评论已关闭