当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:当前互联网技术飞速发展,针对网络上存在的海量数据以及动态网站的出现,文中提出了一种用户自定规则的AJAX网页信息采集功能,该功能能够提取动态网站上的数据,避免垃圾信息的干扰。与传统信息提取系统相比,用户可以自定规则,确定目标网站,半自动化以及自定规则操作,使信息提取更加准确和高效。

引 言

当前在数据量庞大的互联网世界中,网络上的信息存在诸多问题。虚假信息、重复信息、广告干扰等这些信息往往都是冗余或者无用的信息,加上互联网技术的发展与AJAX 技术的兴起,许多站点从可维护性和增加用户体验的角度将数据与网页分离,通过AJAX 从数据库动态生成数据,而有用的信息往往存在于这些数据中,但搜索引擎无法直接搜索到AJAX 网页信息[1]。自定规则的动态网页信息能够采集AJAX 网页信息,并且用户可以自由选取网站并自定采集规则,功能垂直,目标专一,能够高效且快速地获取网页信息。

1 AJAX网页信息生成原理

据中国互联网中心统计,当前中国的网站有百分之四十多都是动态网站,几乎占据了中国互联网的半壁江山,而日常人们主要通过搜索引擎来获取自己感兴趣的信息,搜索引擎的核心之一是网络蜘蛛(Web Spider)。网络蜘蛛通过给定的起始页面按照一定的规则提取页面中的链接,直到没有链接,蜘蛛才停止提取[2]。这其中的过程仅仅解析了网页的源代码,却没有把网页信息写入网页源代码中,因此爬虫收集的只是没有加载动态信息的网页资源。当用户浏览动态网页时,首先在浏览器的地址栏输入网页的URL,向对应的服务器发送请求获取该 URL对应的页面,当获取到页面时,此时并没有获取到网页的信息,浏览器的JS(JavaScript)解析器会继续解析写在网页中的JS 代码,作为动态网页,数据通过页面中的JS 继续向服务器请求数据库中的数据,而传统的网络蜘蛛并没有执行这些后续请求,蜘蛛的功能仅相当于浏览器的第一个请求网页的动作,在浏览器中通过查看网页源代码可以看到一些AJAX 信息并没有显示在源代码中,而网页中能够显示信息, 正是由于浏览器中后续的JS 解析。该过程的原理图如图1 所示。

自定规则的AJAX网页信息采集功能的设计

如图 1 所示,在该网页信息生成的过程中,只有当客户端请求到页面之后,再通过客户端中的JS 解析器解析网页中的JS 数据请求代码,才会从数据库请求数据并写入页面。

2 自定规则采集功能设计

根据前面所分析的原理可知,仅单纯的使用一个 get 请求来获取 AJAX 页面中的信息在原理上是不可行的,因为服务器端并不能解析JS 代码,只有在客户端才能解析,服务器端只能够将网页原封不动地返回给客户端,存在于网页源代码中的JS 数据请求并没有运行。作为一套信息采集系统,该系统的全部功能模块必须都放在服务器环境中,只有通过一个可以完全解析网页的引擎才能使服务器端解析JS 获取网页信息。经过摸索和查找,认为JS 的开源工具包 PhantomJS 可以完成该项功能。可以将PhantomJS 引擎存放于服务器端,通过服务器端语言来调用,这里使用PHP 语言。

2.1 自定规则功能结构的设计

属于一个网站的所有页面的结构基本类似,网站与网站之间的结构可以完全不同,也可以类似,但网页结构几乎不可能完全一样,即使存在轻微差别,也会导致一些信息的提取规则完全不同。因此一旦写死了某一个网站的提取规则,随着网站的改版,可能其中页面的结构发生了变化,仅HTML 标签名属性发生变化就会导致抽取规则的改变,因此用户自定规则能够很好地解决问题[3-8]。提取信息的规则写在JS 文件中, 除开 PhantomJS 函数,用户只需要写提取网站信息的DOM 规则。在前台设计一个用户上传规则和选取规则的功能,服务器端设定一个专门存放规则的文件夹,前台能够读取用户上传的规则,从而完成目标页面信息的提取。自定规则工作原理图如图 2 所示。

自定规则的AJAX网页信息采集功能的设计

用户写入核心的DOM 规则上传到规则库。当用户需要使用该规则时,前台可以加载规则库中的文件,通过选取指定的文件,服务器将文件名传入PhantomJS 引擎中,接收网站的链接以目标网页进行信息提取,返回信息经处理后返回客户端。

2.2 PhantomJS与PHP通信

服务器中存放一个 PhantomJS 可执行文件, 称其为PhantomJS 引擎, 该引擎通过命令窗口运行一个JS 为后缀的文件,该文件中写入一些PhantomJS 的接口函数和网页链接以及信息提取规则。作为单纯的信息提取,JS 文件中的PhantomJS 接口函数是固定的,它们可以完成解析和加载网页,使网页内部的 JS 源代码完全执行。PHP 函数库中存在一个 调用可执行文件的函数 exec()。利用该函数调用 PhantomJS 可执行文件,PhantomJS 运行用户自定规则的 JS 文件,从而 进行动态信息的提取。例如 exec("chcp 65001 && cd /d f :/ phantomJS/phantomjs-2.0.0-windows && phantomjs sample.js


{$url}",$arr,$i),该语句表示通过 phantomJS 执行 sample. js 文件,传入页面的链接为 $url,返回的结果存入 $arr 中。 Sample.js 文件中的代码如下:

自定规则的AJAX网页信息采集功能的设计

根据该代码可以提取图 2 中的价格信息,将对应的 URL 写入上面 exec 的 $url 中,得到图 3 所示的结果,由图 3 可知, 价格 5 799 能够被正确提取出来。提取结果如图 4 所示。

自定规则的AJAX网页信息采集功能的设计


结 语

本文提出了一种能够自定规则提取 AJAX 网页信息功能的设计,通过测试能够成功提取动态 AJAX 网页信息,相较于传统的网络蜘蛛,自定规则设计可以更好更贴合用户需求来对指定网站进行信息提取,避免了虚假网站的干扰和重复信息的冗余。相较于传统的dom 信息提取系统,该信息提取功能加入了 PhantomJS 包,能够提取传统dom 无法提取的动态信息,功能得到了加强。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭