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

栏目: 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键值对能够对应得上。这样,我们就找到了页面中所有数据的来源,对相应的接口进行请求和解析即可。


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

查看所有标签

猜你喜欢:

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

火的礼物:人类与计算技术的终极博弈(第4版)

火的礼物:人类与计算技术的终极博弈(第4版)

【美】Baase,Sara(莎拉芭氏) / 郭耀、李琦 / 电子工业出版社 / 89.00

《火的礼物:人类与计算技术的终极博弈 (第4版)》是一本讲解与计算技术相关的社会、法律和伦理问题的综合性读物。《火的礼物:人类与计算技术的终极博弈 (第4版)》以希腊神话中普罗米修斯送给人类的火的礼物作为类比,针对当前IT技术与互联网迅速发展带来的一些社会问题,从法律和道德的角度详细分析了计算机技术对隐私权、言论自由、知识产权与著作权、网络犯罪等方面带来的新的挑战和应对措施,讲解了计算技术对人类的......一起来看看 《火的礼物:人类与计算技术的终极博弈(第4版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码