【数据采集实例分析】网页复杂渲染机制下的数据解析

栏目: JavaScript · 发布时间: 5年前

内容简介:在进行数据采集的过程中,我们遇到的很多网页所采用的都是比较单一的页面渲染方法。比如:对于采用第一种机制渲染的网页,我们直接使用BeautifulSoup或者正则表达式或xpath对元素进行定位和解析即可。对于采用第二种机制渲染的网页,我们直接抓包找到对应的数据接口,然后使用json模块进行解析取数即可。

一、前言

在进行数据采集的过程中,我们遇到的很多网页所采用的都是比较单一的页面渲染方法。比如:

  • 后端直接返回HTML;
  • 前端请求数据接口进行渲染;

对于采用第一种机制渲染的网页,我们直接使用BeautifulSoup或者正则表达式或xpath对元素进行定位和解析即可。

对于采用第二种机制渲染的网页,我们直接抓包找到对应的数据接口,然后使用json模块进行解析取数即可。

绝大多数网页要么使用的是第一种机制,要么使用的是第二种机制。但是也有一些特殊情况,其页面上的数据使用JS模板进行渲染,并且调用了两个数据接口,其中第一个数据接口包含了大多数的数据字段,第二个数据接口只包含了一个动态的核心字段,如果不仔细分析,就可能在第一个数据接口中不断地寻找那个存在于第二个数据接口的字段数据,但是永远也找不到。下面我们来复盘一下这个数据定位过程。

二、分析页面

首先我们来到目标页面,在目标页面中,我们需要的数据就在如下图所在的位置:

【数据采集实例分析】网页复杂渲染机制下的数据解析

可以发现这是一个表格类型的数据结构,按照常规思路,我们首先查看网页源代码,判断其数据是否由后端直接渲染为HTML:

【数据采集实例分析】网页复杂渲染机制下的数据解析

源代码中寥寥无几的几行代码说明,这个页面的数据是由前端进行获取并进行渲染的,那么我们就需要从网页响应中寻找对应的接口。

三、寻找数据接口

回到目标页面,按键盘的“F12”键以打开浏览器调试窗口(以Chrome为例),切换到“Network”选项卡,点选“XHR”,刷新当前页面,这时候我们就获取请求目标页面时所产生的所有XHR请求:

【数据采集实例分析】网页复杂渲染机制下的数据解析

经过仔细的分析,我们似乎找到了目标数据对应的数据接口:

【数据采集实例分析】网页复杂渲染机制下的数据解析

接口中json字段的数据与页面表格中的数据基本上都能对应上,但是还有一个字段却始终找不到,就是这个状态字段。怎么办?坚守着“页面上的数据都会在响应里面返回”的信念,我们对网页响应的资源进行搜索。在浏览器调试窗口中切换到“Source”选项卡,选择“search all file”:

【数据采集实例分析】网页复杂渲染机制下的数据解析

发现了处理这个数据接口的JS文件。

四、分析JS

我们将这个JS进行格式化还原,发现状态栏的文字是由一个json进行映射的:

【数据采集实例分析】网页复杂渲染机制下的数据解析

接着我们返回直接的数据接口中,继续寻找表示状态值的字段,依然无果。于是从新回到刚刚的JS中,发现其中包含了一个JS的渲染模板(JS文件的第一行),我们将其提取出来重新格式化还原,得到了页面数据的HTML模板:

【数据采集实例分析】网页复杂渲染机制下的数据解析

在这个JS的渲染模板中,我们又有了重要的发现:状态栏的数据默认为-,其没有直接由接口的数据渲染而来,而是通过viewId字段和adgroupid字段渲染td标签的id属性来呈现。

<td class=firstcell id="J_report_{{viewId}}_{{adgroupid}}_displayOnlineState">-</td>
 

通过审查定位元素,我们发现其在HTML结构中的呈现如下图所示:

【数据采集实例分析】网页复杂渲染机制下的数据解析

根据经验,我们判断displayOnlineState这个值就是表示状态的名称,我们继续对响应的XHR内容进行搜索,果不其然,在另外一个接口中发现了displayOnlineState的对应值:

【数据采集实例分析】网页复杂渲染机制下的数据解析

且与之前的状态json键值对能够对应得上。这样,我们就找到了页面中所有数据的来源,对相应的接口进行请求和解析即可。


以上所述就是小编给大家介绍的《【数据采集实例分析】网页复杂渲染机制下的数据解析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

遗传算法

遗传算法

王小平 / 西安交通大学出版社 / 2002-1 / 40.00元

《遗传算法:理论应用与软件实现》全面系统地介绍了遗传算法的基本理论,重点介绍了遗传算法的经典应用和国内外的新发展。全书共分11章。第1章概述了遗传算法的产生与发展、基本思想、基本操作以及应用情况;第2章介绍了基本遗传算法;第3章论述了遗传算法的数学基础;第4章分析了遗传算法的多种改进方法;第5章初步介绍了进化计算理论体系;第6章介绍了遗传算法应用于数值优化问题;第7章介绍了遗传算法应用于组合优化问......一起来看看 《遗传算法》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具