Puppeteer 爬取动态生成的网页实战

2020-06-17 07:01:08易采站长站整理

Puppeteer 相关介绍与安装不过多介绍,可通过以下链接进行学习

一、Puppeteer

开源地址

英文文档

中文社区

二、爬取动态网页

1. 需求

首先,了解下我们的需求: 爬取zoomcharts 文档中

Net Chart
目录下所有访问连接对应的页面,并保存到本地

2. 研究 ZoomCharts 文档页面结构

首先,我们得研究透 ZoomCharts 页面如何加载,以及左侧导航的 DOM 树结构,才好进行下一步操作

页面首次加载

页面首次加载,左侧导航第一个目录

Introduction
高亮,从控制台可看出,该元素增加了
active
类,同时
li[data-section="net-chart"]
节点下只有一个元素节点
a

点击

Net Chart
目录

点击

Net Chart
目录,
Net Chart
目录高亮,下拉显示子目录,查看控制台,其元素节点增加
active
类,并增加
ul
子元素节点, 此时,第一个子目录节点也只有一个子元素节点
a

结论

不难发现, 左侧目录是动态生成的,而不是静态写死的,只有点击父级目录,其子目录才会生成显示,同时,父级目录元素上的

drop
类表明存在子级目录

3. 编写主程序

通过上面分析,得出大概流程如下

从上到下,遍历

Net Chart
目录的 DOM 树,当找到
a.drop
的元素节点,模拟鼠标点击事件
click
,生成子目录节点
找到
Net Chart
目录下所有的
a
链接,生成一个数组
遍历数组,访问每一个子目录页面,保存页面的 html 文件到本地

接下来实现每个具体流程

项目初始化

安装

puppeteer