当前位置:首页 期刊杂志

分布式JS解析在Web信息采集系统中的应用

时间:2024-05-04

梁元

(中国航发贵州黎阳航空动力有限公司 贵州省贵阳市 550014)

随着互联网信息技术的飞速发展,网络影响力已经逐渐渗透在我国的各个领域,而Web 技术更是以其具备的方便直观、丰富表达等特点,逐渐作为Internet 最重要信息发布传输的关键方式。随着Web 信息的不断膨胀,不仅给人们带来了丰富的资源,同时也使得人们在应用过程中面临巨大挑战[1]。所以Web 信息采集正充分发挥其自身作用,运用于站点数据分析、安全检测、Web 图进化、获取个性信息或挖掘用户兴趣等服务中。在传统HTML 网页内可以通过标签嵌入式向用户静态化呈现页面内容,但是这种传统的网页视觉效果,已无法顺应目前用户对于网页信息的显示所需,需要及时弥补发生动态化网页语言的技术弊端。在网页动态语言领域研究的逐渐深入,JavaScript 脚本语言已经逐渐被广泛运用于网页开发技术领域。本文提出Web 信息采集系统应用分布式JS 解析技术的特点,实现动态网页信息采集系统,可以与分布式计算技术相结合,实现更加高效、快速、直观的运行。

1 JS解析技术概述

1.1 JS脚本语言

JS 技术是基于LiveScript 语言基础之上优化提出的,为了解决当时服务器端程序运行中的速率缓慢,频繁服务器交互时间过久问题,将JS 加入浏览器中能够向访问页面用户展示最终的浏览器运行结果[2]。经过展开对JS 技术语言的学习研究,在JS 语脚本语言主要包括以下核心优势特点:

(1)基于对象,能够结合需要来动态化创建、改变对象属性;

(2)事件驱动,能够实现JS 函数绑定特定浏览器操作;

(3)实时性,基于浏览器客户端执行JS 脚本程序;

(4)动态性,JS 技术对客户端诸多事件类型加以界定,实现比较丰富的网页功能交互;

(5)跨平台,该技术可以不受平台局限;

(6)安全性,能够有效预防客户端用户信息泄露丢失。总体正由于JS 语言具有以上特性,所以可以突破传统信息采集系统的技术弊端,应用Web 信息采集系统中。

1.2 JS脚本解析引擎

在JS 脚本执行中对于JS 解析引擎十分依赖,也正是实现浏览器内置引擎,才能够执行JS 解析。如今多数浏览器在实现JS 脚本解析都拥有专门解析引擎,目前比较常用的几类包括如下:

(1)SpiderMonkey,作为C 语言完成编写能够编译、分析、执行JS 脚本的嵌入式引擎;

(2)Chrome V8 作为如今比较流行的浏览器之一,高效JS 解析引擎作为网页打开速度方面出色技术;

(3)Rhino 作为一种能够在Java 运行环境中执行JS 脚本程序。

2 Hadoop分布式计算

图1:数据文件存储结构

分布式计算属于云计算一类在应用中较其他计算方法,能够实现更低的各计算机通信程度,能够实现系统长期稳定运行,且可以结合实际问题情况,综合考量计算机集群异构特点加以确定。划分问题为小块每一台计算机都可以处理自己所负责的数据。并且结合了分布式存储技术、分布式非结构数据库、半结构数据库及任务调度、集群计算等优势[3]。本文通过建立Hadoop 分布式计算框架,能够结合JS 解析技术,从而在应用于Web 信息采集系统获得更加高效稳定的技术效果。

3 动态页面脚本提取解析及任务调度

3.1 Web信息采集系统架构

Web 信息系统通过基于Hadoop 分布式架构平台,成功建立涵盖基础平台模块、信息采集功能模块,以及信息服务以上三大模块。通过这三大子系统功能模块,能够实现爬取网页信息、提取解析脚本、并抽取信息。基于Hadoop 该平台还能够提供Web 信息采集技术支撑,实现数据采集,能够提供信息服务模块的所需数据。经过Nutch 爬虫系统,完成对网页原始信息文件的爬取后,脚本提取解析转化原本脚本包含在内的网页信息原文件,从而实现向静态网页文件的成功转化,并完成有关动态网页的抽取转化形成数据存储结构,在信息服务模块中运用实现系统交互,经过分析处理结构化数据,可以提供用户所需信息服务[4]。

3.2 脚本提取解析

提取Web 网页脚本的工作流程如下:

(1)进行DOM 解析,运用HTML 文档解析工具能够实现不同Filter 的针对性提供,从而成功提取HTML 文档内的DOM 元素,保证了DOM 元素的文档提取便捷性,形成嵌入式HTML 文档内容,并执行脚本文档重构原DOM 树。

(2)提取JS 脚本。解析HTML 脚本文档后,便可以结合JS文档脚本的DOM 元素方式,对HTML 文档是否含有脚本程序进行判断。如果包含则会跳转JS 脚本至解析环境中,如果不包含就会跳转至保存文件。

(3)构建脚本环境,完成JS 脚本抽取后自然需要构建解析环境执行脚本,运用Rhino 引擎来实现。

(4)运行脚本重构DOM 树。

(5)保存文件,在完成DOM 树重构后,转化HTML 文档即可实现动态页面转化为静态页面,并在HTFS 中储存HTML 文档,从而提供给网页信息抽取子系统应用。

3.3 调度算法

Hadoop 集群能够实现单个或多个作业同时处理,并存放于统一队列内,划分作业为多个Map、Reduce 任务。Hadoop 调度器能够实现分配这些任务至集群节点内,有效完成作业,且满足不同作业任务需求,对于任务调度的整体难度很大程度增加。在执行Hadoop 算法调度策略中,MapReduce 编程模型能够达到良好容错性,在其中工作点的任务执行整体进度较其他任务节点更慢时,则存在软硬件配置差异、故障、调度不当等原因。而Hadoop 可以以任务进度值来实现落后任务确定,确定相应的任务进度值。任务处理落后则会对响应时间有所延长,一旦发生落后任务,那么Hadoop 自然就会对该落后任务重新完成节点分配,该机制即推测执行,能够推测执行机制,成功对落后任务产生的执行效率影响有效减少。在调度算法采用的评价指标中,主要以作业任务的响应时间、平均作业响应时间、并行拓展及公平性为主。

3.4 脚本提取解析调度算法设计

假设第i 个选中节点,该节点的可使用网络集、空闲节点集分别用Vi、Ei表示,考虑到对于调度算法效率产生的因素影响,主要表现在Vi节点的信息处理能力,需要完成数据信息处理的Split 大小、自身与所需处理数据二者之间的存储间隔距离。调度算法的阶段选择公式如下:

结合以上建立脚本提取解析调度算法,能够成功构建异构集群环境,确定Hadoop 调度算法的慢任务,并且根据具体的推测执行,提出相应的改进优化策略。

4 脚本提取解析系统

4.1 系统整体架构

结合以上分析建立Web 网页爬取Nutch 子系统,作为整个信息采集系统的关键起始端,脚本提取解析系统需要衔接,形成均为HDFS 的数据文件系统,建立数据文件系统结构(见图1)。基于Nutch 文件存储结构基础实现,在Crawl 文件夹中又包括了Crawldb、linkdb、segments 子文件夹。在三个文件夹中最后一个文件夹,想要成功抓取网页数据文件,只能需要通过content 文件夹进行存储。在设计该系统中需要完成动态化网页信息抓取,并转化为静态网页,所以进一步拆分content 文件夹为两个,分别为content_dyn 动态页面、content_sta 文件夹静态页面。

根据图1 建立的数据文件存储结构框架中,分别包括了以下三个子系统实现,各系统实现功能如下:

首先页面爬取子系统中,能够成功爬取相关页面信息,并实时更新URL 信息,在完成首层数据爬取时,对于1 链接深度URL 对应页面,能够完成URL 信息从种子文件中进行爬取。

其次在脚本提取解析系统中,能够爬取content_dyn 动态页面相关信息,实现JS 自动脚本提取解析,最终成功生成静态页面存储于content_sta 文件夹中。

最后在页面信息抽取系统中,针对最终生成存储的content_sta文件夹,进行文件内容脚本解析,经过实现元数据、页面外部链接、内部文档的分别解析后,在URL 数据库中更新封装,以信息抽取规则为依据最终抽取相应信息至最终的关系数据库内。

4.2 数据文件格式

在Web 信息采集系统中实现JS 提取解析存储的数据文件,主要包括了三种:

(1)原始网页库,作为原本Web 网页所爬取的链接对应原始网页信息文件,涵盖了网页URL、源URL、网页的内容以及具体的爬取时间;

(2)JS 文件库,作为完成原始数据成功爬取后,以外部链接侵入式JS 脚本信息数据库文件,涵盖了网页URL、网页的内容以及具体的爬取时间;

(3)静态网页库,作为处理存储网页动态信息脚本提取解析后,获得的静态化网页信息文件,涵盖了网页URL、源URL、网页的内容、编码方式和生成时间。

5 结语

通过本文研究探讨在Web 信息采集系统中,运用分布式JS 解析技术实现了信息采集系统设计,并提出了整个信息采集系统的设计整体说明,包括了页面爬取子系统、脚本提取解析系统、页面信息抽取系统。通过JS 解析结合Hadoop 分布式计算,提取解析系统的实际运行所处异构集群环境,并在原本Nutch 系统文件的存储结构基础之上,设计整体系统文件数据结构及存储格式,分别为原始网页库、JS 文件库、静态网页库三种,并实现文件结构数据文件格式和该系统的不同模块信息采集功能细节。发现设计的该分布式JS解析应用于Web 信息采集系统思路,能够动态化、高效且准确的实现Web 信息采集,为该领域提出出信息采集技术新思路。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!