CN111158973A - 一种web应用动态演化监测方法 - Google Patents
一种web应用动态演化监测方法 Download PDFInfo
- Publication number
- CN111158973A CN111158973A CN201911237173.4A CN201911237173A CN111158973A CN 111158973 A CN111158973 A CN 111158973A CN 201911237173 A CN201911237173 A CN 201911237173A CN 111158973 A CN111158973 A CN 111158973A
- Authority
- CN
- China
- Prior art keywords
- content block
- web page
- page
- node
- content
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种web应用动态演化监测方法,包括:定期获取待监测的Web页面;根据预设的监测配置信息中的关键内容,在所述Web页面的文档对象模型DOM树中定位到相应节点;当无法定位到相应节点时,则确定为所述Web页面变化;当定位到相应节点时,在所述Web页面中获得包含所述关键内容的当前内容块;将所述当前内容块的标题与在初始化监测任务中从所述Web页面获得的初始内容块的标题进行对比,根据对比结果,确定所述Web页面是否发生变化,以此可以辅助开发者及时主动地发现目标Web应用页面结构上的相关变化,以确定已有系统间的对接是否已经失效。
Description
技术领域
本发明涉及页面动态监测技术领域,特别是涉及一种web应用动态演化监测方法。
背景技术
Web应用常常会由于升级、修补漏洞、用户体验优化等导致页面结构发生动态变化。这种变化会给关联系统之间的对接产生影响。例如,通过嵌入页面而实现的两个系统直接的对接,一个系统变化会导致另一个系统不可用;又例如,通过数据采集而完成的舆情监控,页面结构变化会导致无法继续获取到正确的舆情内容。因此,如何主动地监测到系统页面的变化成为一个重要的研究点。
由于Web应用开发团队及所使用技术栈的不同,作为一种低开销、非侵入、低风险的方案,从Web应用的表现层(也称用户界面层)入手实现系统间的整合与对接成为一种较为有效的方案。然而,此种方案与Web页面的布局结构有着较强的关联性,Web页面布局的变化可能使得已有的整合对接方案失效,这也就成为Web应用整合对接中必须考虑的问题。同时,Web应用变化的不可预知性,使得对变化没有有效的预警方式,无法及时地检测到变化。
因此,如何及时主动地发现Web应用页面的变化,辅助开发人员进行修复,以保证系统继续正确的运行,成为Web应用整合时需要考虑的问题,这也正是本发明要解决的问题。
发明内容
本发明提供一种web应用动态演化监测方法,以克服上述技术问题。
为了解决上述问题,本发明公开了一种web应用动态演化监测方法,包括:
定期获取待监测的Web页面;
根据预设的监测配置信息中的关键内容,在所述Web页面的文档对象模型DOM树中定位到相应节点;
当无法定位到相应节点时,则确定为所述Web页面变化;
当定位到相应节点时,所述方法包括:
在所述Web页面中获得包含所述关键内容的当前内容块;
将所述当前内容块的标题与在初始化监测任务中从所述Web页面获得的初始内容块的标题进行对比;
如果标题非空且相等,则确定为所述Web页面没有发生相关变化;
如果标题非空且不相等,则判断为定位到错误节点,输出检测到相关变化的结果;
如果标题均为空,则计算所述当前内容块与所述初始内容块之间的语义相似度以及DOM子树的结构相似度,并将所述语义相似度与预设语义阈值进行比较,以及将所述结构相似度与预设结构阈值进行比较,根据比较结果,确定所述Web页面是否发生变化。
进一步的,在定期获取待监测的Web页面之前,所述方法包括:
接收用户输入的待监测Web页面的所述监测配置信息;
根据所述监测配置信息,生成用于监测所述待监测Web页面的页面变化的监测任务;
所述初始化监测任务包括:
获取所述Web页面的初始页面信息;
根据所述监测配置信息中的关键内容,在所述初始页面信息中,获得包含所述关键内容的初始内容块。
进一步的,所述监测配置信息包括所述用户的登录信息和用于验证所述登录信息的Cookie信息;
所述接收用户输入的待监测Web页面的所述监测配置信息的步骤包括:
接收用户针对所述Web页面的登录操作,获得该用户的登录信息;
将所述登录信息发送给所述Web页面对应的服务器;
接收所述服务器针对所述登录信息返回的用于验证所述登录信息的Cookie信息;
所述定期获取待监测的Web页面的步骤包括:
定期将所述Cookie信息以HTTP请求头的方式同获取所述Web页面的请求一并发送给所述Web页面对应的服务器;
接收所述服务器针对所述请求返回的所述Web页面。
进一步的,所述监测配置信息包括所述Web页面的超文本标记语言HTML代码和所述当前内容块对应的XML路径语言XPath;
所述当前内容块的标题的获得方法包括:
将所述HTML代码解析成对应的DOM树;
根据所述当前内容块对应的XPath,从所述DOM树中提取当前内容块CB;
查询与所述CB相似的兄弟节点的列表CBList;
获取所述CB在所述CBList中的下标i;
将当前内容块CB赋值给循环变量curNode,开始循环,直到找到所述当前内容块的标题;其中,所述循环变量的循环方法包括:
在每一次循环中,先取出所述curNode最左的文本节点TextNode作为候选标题节点candidate,并获取其中的文本内容;
根据标题预设特征,判断所述文本内容是否满足作为当前内容块的标题的条件;
如果满足,则寻找与candidate相似的兄弟节点列表candidates,返回candidates[i]的文本内容作为所述当前内容块的标题;
如果不满足,则将所述当前节点在DOM树中的父节点作为所述candidate,扩大寻找范围,继续循环。
进一步的,当所述寻找范围大于预设停止条件时,退出所述循环;
若在所述循环中未找到当前内容块的标题,返回一个空的字符串。
进一步的,计算所述当前内容块与所述初始内容块之间的语义相似度,将所述语义相似度与预设语义阈值进行比较,根据比较结果,确定所述Web页面是否发生变化的步骤包括:
分别提取所述当前内容块与所述初始内容块中的全部文本信息;
计算两个内容块的全部文本信息之间的相似度;
将所述语义相似度与预设语义阈值进行比较;
在所述语义相似度低于预设语义阈值时,确定为所述Web页面发生变化,输出检测到相关变化的结果。
进一步的,计算所述当前内容块与所述初始内容块的DOM子树的结构相似度的步骤包括:
将所述当前内容块与所述初始内容块各自的DOM子树中的标签按序排列为字符串;
根据两个内容块之间的字符串的编辑距离和所述关键内容,计算结构相似度。
进一步的,所述将所述当前内容块与所述初始内容块各自的DOM树中的标签按序排列为字符串的步骤进一步包括:
将压缩后的当前内容块与压缩后的初始内容块各自的DOM子树中的标签按序排列为字符串;
其中,对内容块进行压缩的步骤包括:
将内容块CB赋值给经过列表项压缩后的内容块CCB,移除所述CCB的子节点列表children中的全部子节点,将要计算的新的子节点列表cchildren初始化为一个空列表;
对内容块进行深度优先遍历,依次递归地对其每一个子节点执行列表项压缩操作,得到压缩后的子节点cchild;
在cchildren中寻找是否存在与所述cchild结构相似的子节点;
在未寻找到与所述cchild结构相似的子节点时,将压缩后的cchild加入到所述cchildren中;
将所述cchildren赋值为CCB的children,并返回CCB。
进一步的,所述方法还包括:
当确定为所述Web页面没有发生相关变化时,将此次监测任务获取到的Web页面内容进行存储,作为该Web页面的历史数据。
与现有技术相比,本发明包括以下优点:
本发明提出了一种基于Web页面DOM树结构,并结合登录状态保持、标题识别、语义及结构相似度的web应用动态演化监测方法;该方法首先需要给定一个待监测的目标Web页面,以及页面中待提取的关键内容;对于需要登录的Web应用,同时还需要用户预先执行一次登录操作,以便对登录状态进行保持;最后,工具会根据给定的信息,定期地获取待监测Web页面的HTML代码,将其解析为DOM树;如果不能够在其中定位到某些指定的关键内容,则会给出CHANGED的变化提示;否则,则通过内容块标题的推理、内容块文本的语义相似度及内容块DOM树的结构相似度的计算,判断是否存在定位到错误节点的情况,从而决定关键内容是否发生了相关变化。通过上述方法,可以辅助开发者及时主动地发现目标Web应用页面结构上的相关变化,以确定已有系统间的对接是否已经失效,在现有技术基础上取得了巨大进步。
附图说明
图1是本发明实施例一种web应用动态演化监测方法的步骤流程图;
图2是关键内容与内容块关系的一个实例的示意图;
图3a是某Web应用的旧版本页面的示意图;
图3b是某Web应用的变化之后新版本的页面的示意图;
图3c是某Web应用的旧版本页面的DOM树的示意图;
图3d是某Web应用的新版本的页面的DOM树的示意图;
图4是内容块列表项之间细微差别示例图;
图5是Web页面变化监测系统的整体架构示意图;
图6a是网站X首页示例p_1的示意图;
图6b是网站X首页示例p_7的示意图;
图6c是网站X首页示例p_17的示意图;
图7a是网站X首页p_1与p_7结构对比示意图;
图7b是网站X首页p_1与p_17结构对比示意图;
图7c是网站X登录与首页接口示意图;
图7d是网站X系统运行日志的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
由于Web应用的复杂性与多样性,本发明在实现Web页面的动态演化监测时存在着如下挑战:
(1)Web应用本身的复杂性的挑战。一个Web应用通常包含多个页面,其中的部分页面可能无法直接通过URL进行访问,需要进行一系列的前置操作,如登录、多次点击等。如访问某政务服务网需要进行变化监测的页面,首先得先在第一个页面中输入社会信用代码并点击登录,其次还需要在第二页面中点击新建按钮,才能够最终跳转到目标页面。这给页面的动态演化监测过程带来了困难。
(2)Web页面变化的复杂性的挑战。Web页面的变化频繁且多样,在这些变化中,本发明所关注的是页面DOM树结构或者说布局的变化。而根据是否会导致Web应用间对接失效,进一步可以将结构变化分为两类:如果由于页面结构的变化导致已有的Web应用对接失效,则称这种变化为相关变化;否则,则为无关变化。
本发明仅关注其中的相关变化。通常用户容易观察到Web页面DOM树结构的变化,然而根据这一信息难以对相关变化与无关变化做出区分,因为它们都有可能引起页面结构的改变。因此,如何准确对相关变化与无关变化进行区分,成为了页面动态演化监测过程需要解决的问题。
针对上述挑战,参照图1,示出了本发明实施例一种web应用动态演化监测方法的步骤流程图,具体可以包括以下步骤:
步骤S101,定期获取待监测的Web页面;
为定期获取待监测的Web页面,本发明实施例的第一步是建立针对该Web页面的监测任务,具体可以包括以下步骤:
步骤1:接收用户输入的待监测Web页面的所述监测配置信息;
步骤2:根据所述监测配置信息,生成用于监测所述待监测Web页面的页面变化的监测任务。
在本发明各个实施例中,监测配置信息可由运维人员进行配置。包括需要进行监测的Web页面的URL。如果被监控的Web应用需要进行登录,则也在这里进行一次登录操作,以记录登录状态信息。
针对每个Web页面,与其所在系统中的每个数据接口是对应的,在该系统中,每一个数据接口有一个单独的配置页面。所以,本发明实施例针对页面变化监测的配置可添加在该Web页面原有的配置页面中作为扩展。当然,也可单独设置针对页面变化监测的配置页。基于扩展配置方式,在配置页中,通过源页面监测的开关能够开启或关闭对该API所对应的源页面的变化监测。当选择开启此功能时,会出现页面变化监测的配置项,包括源页面的URL,页面中关键内容的XPath,以及监控频率(决定本发明的定期时间)。同时,配置中还包括源系统是否需要登录的开关,如果源Web系统需要进行登录,则打开此开关进行预登录的配置,本发明实施例所实现的预登录配置包含一个系统登录接口的URL以及一个“预登录”的按钮,用户只需配置相应接口的URL,并点击“预登录”即可。配置完成后,点击右上方的保存按钮即可完成对Web页面的监测配置。
步骤2中监测任务的生成即对用户的配置信息进行建模,生成一个对应的监控任务对象,可使用MonitorTask类对监控任务建模。生成了监测任务后,需要对任务进行存储,以便后续对任务进行读取。可使用MongoDB作为监控任务的存储方案,全部任务存放在一个Collection中。MongoDB是一款NoSQL型数据库,没有schema限制,因而能够方便的对数据结构进行调整。任务存储后,需要按照配置定时对任务进行调度执行。如基于SpringBoot提供的定时任务框架完成监测任务的定时调度。
在具体实现时,监测任务会首先进行一次初始执行,获取初始的Web页面内容,该内容作为后续判断页面是否变化的基础。此后,任务受监测方法的调度定期执行。具体的,所述初始化监测任务包括:
步骤3:获取所述Web页面的初始页面信息;
步骤4:根据所述监测配置信息中的关键内容,在所述初始页面信息中,获得包含所述关键内容的初始内容块。发明人基于对Web应用页面的观察分析,发现Web页面通常对不同的内容进行分块显示。因此,在本发明的各个实施例中,将每一个这样的块称为内容块。同一个内容块中包含的内容一般在同一个语义的上下文中,表达的语义相近,而需要在页面中获取的关键内容,也基本都集中在某一个或某几个内容块中。内容块的引入,在实现Web页面的动态演化监测时,使得本发明实施例可以结合内容块的结构及内容块的语义(如内容块标题)信息,辅助对页面变化进行更加准确的判断。图2为关键内容与内容块关系的一个实例。
步骤3中的页面的获取主要通过HTTP协议请求获取目标Web页面的内容,HTTP请求的发送可使用SpringBoot提供的RestTemplate与Apache的HttpClient库实现。
在实际监测时,部分Web应用会对用户的访问进行一定的限制,一些特定的页面需要预先登录才能够进行访问。对于这些隐藏在登录操作之后的页面,如果跳过登录而直接通过页面对应的URL尝试对其内容进行访问,则通常会因为系统的访问控制机制导致页面跳转到登录页,导致无法获取到需要的页面内容,进而无法检查页面是否发生了变化。因此,如何处理这种需要登录的场景成为方法必须考虑的问题。针对该问题,在本发明一优选实施例中示出了所述监测配置信息包括所述用户的登录信息和用于验证所述登录信息的Cookie信息。
步骤1的步骤还包括:
接收用户针对所述Web页面的登录操作,获得该用户的登录信息;
将所述登录信息发送给所述Web页面对应的服务器;
接收所述服务器针对所述登录信息返回的用于验证所述登录信息的Cookie信息;
以此,针对登录后才能访问的Web页面,步骤S201的步骤进一步可以包括:定期将所述Cookie信息以HTTP请求头的方式同获取所述Web页面的请求一并发送给所述Web页面对应的服务器;接收所述服务器针对所述请求返回的所述Web页面。通过上述方法,可通过基于心跳的Session定期刷新技术对登录状态进行保持,以此最大程度保证能获取到Web页面,实现对Web页面的后续流程。
步骤S102,根据预设的监测配置信息中的关键内容,在所述Web页面的文档对象模型DOM树中定位到相应节点;
首先,获取当前监测任务所获取到的新版本页面DOM树的全部子树,将每一个子树作为一个待匹配的内容块,分别对这些内容块进行特征的提取。然后,根据预设的监测配置信息中的关键内容,对新版本页面中的内容块集合进行相似度的匹配,从而在页面中定位出包含关键内容的内容块。该内容对应步骤S102中的相应节点。需要说明的是,步骤S102的具体实现方法依据现有树节点的定位实现,树节点的定位即在给定的树结构中定位出所需要的节点的过程,一般包括基于节点属性的方式与基于节点路径的方式。XPath基于节点在树中的路径,将由根节点出发到达目标节点路径上所有节点的标签按顺序排列起来,对每个节点,再添加上该节点在同一级相同标签的兄弟节点中的次序,最后,以‘/’将这些片段进行连接,即得到了该节点的XPath。
步骤S103,当无法定位到相应节点时,则确定为所述Web页面变化;
由于该关键内容是基于所述Web页面的初始页面信息而设置的,所以当系统找不到上述相应节点时,则可肯定判断该页面发生变化。
仅根据能否在页面中定位到指定的关键内容节点来判断页面是否发生了相关变化,会存在定位到错误节点的情况。为了解决这一问题,本发明从内容块的标题入手。接下来以一个实例对该问题做详细的说明,
以图3所示某Web应用的新旧版本页面为例,图3a为旧版本页面,假如关键内容是“市县动态”的条目列表;图3c是此时页面的DOM树,从中可以看出,市县动态条目列表部分对应的XPath为//*[@id=’newsrt1_1’]/ul/li/a;图3b是变化之后新版本的页面,从中可以看出,在原来“综合要闻”、“市县动态”和“国内新闻”这三个标签之前新添加了“国家文件”与“省文件”这两个标签;图3d是变化后页面的DOM树,如果依然按照之前给定的XPath进行关键内容的定位,则实际会定位到“省文件”的条目列表。这一变化显然是一个相关变化,但是,如果仅根据能否在页面中定位到指定的关键内容为标准,并不能够发现这一变化。
为了解决这一问题,从图中发明人观察到这两个内容块对应的标题信息是存在明显差异的,旧版本页面中的内容块标题为“市县动态”,而到了新版本页面中则变为了“省文件”。所以,如果能够知道内容块对应的标题,则对于上述的变化,通过对比两个页面中找到的内容块的标题,就可以发现“市县动态”与“省文件”这两个标题并不一致,从而判断页面发生了相关变化。不过,这些标题信息通常并不会在页面的HTML代码中特别明确的标出,因此,本发明实施例提出了下述方法:
当定位到相应节点时,判断是否定位到了错误节点,所述方法包括:
步骤S104,在所述Web页面中获得包含所述关键内容的当前内容块;
步骤S105,将所述当前内容块的标题与在初始化监测任务中从所述Web页面获得的初始内容块的标题进行对比;
具体的,所述监测配置信息包括所述Web页面的超文本标记语言HTML代码和所述当前内容块对应的XML路径语言XPath;
所述当前内容块的标题的获得方法包括:
步骤5:将所述HTML代码解析成对应的DOM树;
步骤6:根据所述当前内容块对应的XPath,从所述DOM树中提取当前内容块CB;
步骤7:查询与所述CB相似的兄弟节点的列表CBList;
步骤8:获取所述CB在所述CBList中的下标i;
步骤9:将当前内容块CB赋值给循环变量curNode,开始循环,直到找到所述当前内容块的标题;其中,所述循环变量的循环方法包括:
在每一次循环中,先取出所述curNode最左的文本节点TextNode作为候选标题节点candidate,并获取其中的文本内容;
根据标题预设特征,判断所述文本内容是否满足作为当前内容块的标题的条件;
如果满足,则寻找与candidate相似的兄弟节点列表candidates,返回candidates[i]的文本内容作为所述当前内容块的标题;
如果不满足,则将所述当前节点在DOM树中的父节点作为所述candidate,扩大寻找范围,继续循环。
进一步的,当所述寻找范围大于预设停止条件时,退出所述循环;
若在所述循环中未找到当前内容块的标题,返回一个空的字符串。此处的预设停止条件为寻找范围已经扩大到了整个Web页面。
步骤5~步骤9为实现当前内容块的标题获得的一种可行方法,基于发明人的以下发现实现:Web页面的布局通常为“标题+内容”,这样的布局习惯使得内容块的标题节点一般是其父节点的第一个子节点,或其祖先节点的最左子节点,多数情况下其节点标签为h1~h6(第一至六行)。标题节点的附近有时会出现内容为“更多”、“more”等字样的节点。另外,标题内容的长度通常不会超过10个汉字,并且不包含标点、数字。
基于上述发现,寻找与CB相似的兄弟节点列表是因为Web页面“标题+内容”的展现形式又可能分为以下两种情况,即第一种为一个标题加上紧跟着的实际内容;第二种中首先是一个标题的列表,之后跟着每一个标题对应的具体内容的列表。对于后一种情况,需要在标题列表中确定具体哪一项是与指定的内容块对应的标题,因此,在本发明实施例中,通过寻找与当前内容块相似兄弟节点的方式,可以同时处理这两种页面的布局。
步骤S106,如果标题非空且相等,则确定为所述Web页面没有发生相关变化;
步骤S107,如果标题非空且不相等,则判断为定位到错误节点,输出检测到相关变化的结果;
在遇到没有标题的内容块时,就无法再判断是否定位到了错误节点,无法进一步判断所述Web页面是否发生变化。因此,本发明实施例提出了如步骤S108的判断方法,结合内容块文本的语义相似度及结构相似度进行判断。
步骤S108,如果标题均为空,则计算所述当前内容块与所述初始内容块之间的语义相似度以及DOM子树的结构相似度,并将所述语义相似度与预设语义阈值进行比较,以及将所述结构相似度与预设结构阈值进行比较,根据比较结果,确定所述页面是否发生变化。
具体实现时,计算所述当前内容块与所述初始内容块之间的语义相似度,将所述语义相似度与预设语义阈值进行比较,根据比较结果,确定所述Web页面是否发生变化的步骤可以包括:
步骤10:分别提取所述当前内容块与所述初始内容块中的全部文本信息;
步骤11:计算两个内容块的全部文本信息之间的相似度;
步骤12:将所述语义相似度与预设语义阈值进行比较;
步骤13:在所述语义相似度低于预设语义阈值时,确定为所述Web页面发生变化,输出检测到相关变化的结果。
内容块中文本的语义相似度的计算已经有很多成熟的方法,例如可以借助于一些已经训练好的语料模型,在此不做详细介绍。需要说明的是,根据预设语义阈值的设置不同,所述Web页面发生变化的判断结果不同,步骤13为本发明的一种示例。即,在另外一种可能实现情况中,步骤13也可为:在所述语义相似度高于预设语义阈值时,确定为所述Web页面发生变化。
就步骤S108而言,在本发明实施例中,内容块的结构相似度的计算可基于DOM子树之间的编辑距离或对齐距离实现。将所述结构相似度与预设结构阈值进行比较,根据比较结果,确定所述页面是否发生变化,预设结构阈值的设置不同,所述Web页面发生变化的判断结果不同,可参照步骤13的确定方式。
树的编辑距离由序列的编辑距离引申而来,即通过增、删、改等操作使得一棵树变化为另一棵树。编辑距离越小,则树之间的相似度越高。优选的,采用树的编辑距离作为计算方法;计算所述当前内容块与所述初始内容块的DOM树的结构相似度的步骤可以包括:
步骤14:将所述当前内容块与所述初始内容块各自的DOM子树中的标签按序排列为字符串;
步骤15:根据两个内容块之间的字符串的编辑距离和所述关键内容,计算结构相似度。
在实际监测时,内容块中包含的列表元素会给对内容块结构相似度的计算带来一些特殊的问题,最主要体现在列表元素的个数不固定的情况。列表元素个数前后的变化会导致内容块中节点的增删,从而影响到内容块的结构。不过,发明人认为在计算结构相似度时并不应该考虑这种变化,因为通常开发者会将此部分整体作为一个列表进行处理,而非关注于单个的列表项。因此,列表项的增删一般不会使得对列表的处理失效。
针对这一问题,步骤14可采用以下步骤进行处理:
将压缩后的当前内容块与压缩后的初始内容块各自的DOM子树中的标签按序排列为字符串;
其中,对内容块进行压缩的步骤包括:
将内容块CB赋值给经过列表项压缩后的内容块CCB,移除所述CCB的子节点列表children中的全部子节点,将要计算的新的子节点列表cchildren初始化为一个空列表;
对内容块进行深度优先遍历,依次递归地对其每一个子节点执行列表项压缩操作,得到压缩后的子节点cchild;
在cchildren中寻找是否存在与所述cchild结构相似的子节点;
在未寻找到与所述cchild结构相似的子节点时,将压缩后的cchild加入到所述cchildren中;
将所述cchildren赋值为CCB的children,并返回CCB。
本发明实施例提出了对内容块中列表元素的压缩算法,采取自底向上的方式对相似的列表项进行压缩,最终仅保留其中一项作为对列表项结构的描述。最终输出经过压缩的内容块的DOM树,后续的结构检查基于该压缩的DOM树以消除由于列表项数目的变化带来的影响。
需要说明的是,在本发明实施例中,之所以寻找相似的节点而不是完全相同的节点,是存在这种情况:很多Web页面为了对重要内容进行强调,会对该列表项使用一些特殊的结构。如图4所示,对于最新的内容,页面在列表项的a标签中另外添加了一个sup标签,而相对较老的列表项则没有这一标签。这种提示性节点通常与实际内容无关,不包含在关键内容之中,因此这种微妙的结构差异不会对系统间的对接产生影响。如果只对结构完全相同的列表项节点进行压缩,则可能出现由于新获取到的页面没有新的内容,导致错误地认为内容块的结构发生了变化。为了能够处理此种情况,算法尝试寻找相似节点而非完全相同的节点。其次,这里对于节点相似性的度量,考虑到相似节点间的差异较小,算法采用了按照前序遍历的方式将节点对应的DOM子树中的标签按序排列为字符串,然后通过字符串的编辑距离,结合指定的关键内容,判定节点的相似度。
综上,通过步骤S101~S108,辅助开发者及时主动地发现目标Web应用页面结构上的相关变化,以确定已有系统间的对接是否已经失效,克服了现有Web应用中的页面并不一定都能够直接通过URL进行访问,可能需要进行一系列的前置操作,如登录、多次点击等导致获取这类页面内容具有一定的难度的问题。
当然,为了便于开发这在检测到页面变化后,根据关键内容的特征,建立起关键内容在新旧版本页面之间的映射关系,完成最终关键内容的定位,本发明实施例还提供了以下步骤,包括:
当确定为所述Web页面没有发生相关变化时,将此次监测任务获取到的Web页面内容进行存储,作为该Web页面的历史数据。本发明实施例所存储的历史数据,可作为后续关键内容定位的依据。
为实现上述监测方法在实际中的应用,应用所述Web页面的系统会把本发明实施例的监测流程封装并服务化,同时提供友好的用户交互。系统的整体架构如图5所示,主要分为前端和后端两部分。后端包括之前已经提到过的监测任务管理模块,它又细分为监测任务存储模块与监测任务调度模块。系统的前端部分则主要包括了监测任务配置界面,监测任务管理界面,监测结果展示界面,以及系统运行状态管理界面。监测任务配置界面提供给用户进行页面监测配置的功能,因此它包括了目标页面的URL,关键内容的XPath,以及监测频率的用户配置接口。另外,对于需要登录才能够访问的目标页面,界面为用户提供了一个进行系统预登录的接口,并配合后端保存初始的登录状态信息。用户配置完成后,通过界面的提交接口提交配置信息,将页面监测的配置提交给后端以注册一个新的页面监测任务。
监测任务管理界面为用户展示已经注册过的页面监测任务列表,并提供对监控任务进行编辑、开始/停止、删除等生命周期管理的接口。界面同时包含触发监测任务配置界面的入口,用于开启对一个新的监测任务的配置。监测任务的状态同时也会简单地在该界面中进行展示,该状态信息如是否检测到界面的变化,以使得用户了解当前监测的结果。界面提供给用户根据监测状态、目标页面等进行监测任务搜索的接口,用于快速查找某一监测任务。同时,该界面包含监测结果展示界面的入口,使用户能够获取更加详细的变化检测以及关键内容定位的结果。
监测结果展示界面用于详细展示对目标页面的监测结果,包括页面变化的检测与关键内容的定位,可视化地将新旧版本页面内容块以及关键内容的对应关系展示给用户,辅助用户后续对页面变化的进行处理。
系统运行状态管理界面用于展示系统的自检状态,帮助用户了解当前系统的运行状态。
接下来,采用一具体示例对本发明实施例的Web应用动态演化监测方法的效果进行验证。
一、实例研究——中国某网站X。
以中国某网站X首页为例,对变化检测,内容块定位等过程进行实例验证。其中会涉及到本发明实施例提出的在这些过程中使用的登录处理、标题识别、特征提取等方法。
由于本文的实验Web页面数据均来自Web Archive网站,而此网站抓取的页面不包括Web系统登录后才能够访问到的页面。因此,为了模拟需要登录的Web系统以验证本文提出的对于登录的处理方法,本实例在实验设计时利用该网站X登录接口,以及该网站X的历史数据,模拟出了一个需要登录才能够访问到首页的“登录版”网站X系统。该系统包括17个爬取到的网站X的首页数据,以p_1~p_17对其进行标识,其中p_1~p_16为同一个版本不同时间的页面,p_17为改版后的页面。每次对该系统的访问会依次返回p_1,p_2,…,p_17所对应的内容。本实例将使用本发明实施例实现的Web页面变化监测系统对该模拟的网站X系统进行变化监测及关键内容的定位。
图6a、6b、6c为三个比较具有代表性的中国X网站首页的示例,分别对应于p_1,p_7,p_17,其中的“知网动态”是本实例需要获取的数据,也即页面的关键内容。可以看到,p_1与p_7结构类似,但是具体的动态条目数量不同,因此p_7相较于p_1多了4个li节点,如图7a所示,如之前所述,由于本发明实施例对于此种结构性的改变不认为它是相关变化;而p_1与p_17则存在比较大的结构差异,其中的关键内容“知网动态”在页面中的相对位置也发生了变化,如图7b所示,依照p_1中“知网动态”的XPath信息已经无法在p_17中定位到具体的内容块,因此页面发生了相关变化。所以,对于该实例,期望的结果为系统在获取到p_17并对其进行变化检查之后给出CHANGED(变化)的结果,同时在p_17中进行内容块与关键内容的定位;在此之前,对Web页面的检查结果都应该是NO_DIFFERENCE。
首先来看对系统登录的处理,本实例将该系统的登录操作用现有的某Y平台进行服务化,生成相对应的登录接口;同样地,也对系统登录后的首页使用该Y平台生成数据接口,该接口直接的返回完整的页面内容。通过对登录接口的一次调用,相关的Session信息就会被该Y平台系统管理起来,后续对首页接口的调用即可直接获取到页面内容,同时更新Session信息,从而保证通过接口能够继续获取到对应的页面数据。登录和首页的接口如图7c所示。
有了上述登录与获取首页内容的接口,就可以开始对该Web系统的页面进行监测。利用这两个接口在系统中注册一个监测任务,任务随后启动监测,并会在检查到变化后进行关键内容的定位。从图7d所示的系统运行日志可以看到,在第17次执行监测任务时系统检查到了页面的变化,并给出了CHANGED的结果,符合预期。
二、实例研究——某省知识产权局
本实例将以某省知识产权局系统为例(图3所示的例子),重点对本发明实施例提出的标题识别方法在特殊页面结构中的正确性,以及在变化检测过程中的有效性进行验证。
本实例选取了图3所示的两个不同版本的页面以及指定的关键内容的XPath作为输入,在两个版本的页面中都能够根据指定的XPath定位到对应的节点,因此开始判断是否存在定位到错误节点的情况。方法首先通过计算最近公共祖先节点得到了内容块的XPath为//*[@id="newsrt1_1"],在旧版本的页面中,这一路径对应于“市县动态”的内容。在新版本的首页中,新增了“国家文件”与“省文件”两个标签页。根据上面的XPath会在新版本页面中定位到“省文件”标签页的内容。方法开始尝试对内容块的标题进行识别,发现了这两个内容块的标题分别为“市县动态”与“省文件”,两个标题并不相同,因此正确地给出了CHANGED的检测结果,发现了这一较为特殊的页面变化,从而证明了本发明实施例提出的标题识别方法的正确性,以及其作为一种变化检测的辅助手段的有效性。
在具体验证阶段,选取了18个Y平台项目对应的Web系统。本实例通过WebArchive网站爬取了这些Web系统2014~2018年的历史页面数据,共包含2836个Web页面。
从上面的2836个Web页面中选出了79个页面对组成了79组变化检测的测试用例,每一组测试用例中包含同一个Web应用不同时间的Web页面数据,以及需要监测的内容块的XPath。这79组测试用例中,56组没有发生相关变化,其余23组发生了相关变化。表1为本实例定义的对于方法变化检测过程的评价指标,本实例主要考察检测的准确率与召回率。
表1变化检测评价指标
表2变化检测结果
实际有相关变化 | 实际无相关变化 | |
检测有相关变化 | 23 | 2 |
检测无相关变化 | 0 | 54 |
表2是对上述79组测试用例进行变化检测的结果,从中可以看到,本文提出的Web页面变化检测方法的准确率达到了P=23/(23+2)=92%,而召回率则是:R=23/(23+0)=100%。
因此,本发明实施例的检测方法对Web页面变化的检测具有较高的准确性。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本发明所提供的一种web应用动态演化监测方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种web应用动态演化监测方法,其特征在于,包括:
定期获取待监测的Web页面;
根据预设的监测配置信息中的关键内容,在所述Web页面的文档对象模型DOM树中定位到相应节点;
当无法定位到相应节点时,则确定为所述Web页面变化;
当定位到相应节点时,所述方法包括:
在所述Web页面中获得包含所述关键内容的当前内容块;
将所述当前内容块的标题与在初始化监测任务中从所述Web页面获得的初始内容块的标题进行对比;
如果标题非空且相等,则确定为所述Web页面没有发生相关变化;
如果标题非空且不相等,则判断为定位到错误节点,输出检测到相关变化的结果;
如果标题均为空,则计算所述当前内容块与所述初始内容块之间的语义相似度以及DOM子树的结构相似度,并将所述语义相似度与预设语义阈值进行比较,以及将所述结构相似度与预设结构阈值进行比较,根据比较结果,确定所述Web页面是否发生变化。
2.根据权利要求1所述的方法,其特征在于,在定期获取待监测的Web页面之前,所述方法包括:
接收用户输入的待监测Web页面的所述监测配置信息;
根据所述监测配置信息,生成用于监测所述待监测Web页面的页面变化的监测任务;
所述初始化监测任务包括:
获取所述Web页面的初始页面信息;
根据所述监测配置信息中的关键内容,在所述初始页面信息中,获得包含所述关键内容的初始内容块。
3.根据权利要求1或2所述的方法,其特征在于,所述监测配置信息包括所述用户的登录信息和用于验证所述登录信息的Cookie信息;
所述接收用户输入的待监测Web页面的所述监测配置信息的步骤包括:
接收用户针对所述Web页面的登录操作,获得该用户的登录信息;
将所述登录信息发送给所述Web页面对应的服务器;
接收所述服务器针对所述登录信息返回的用于验证所述登录信息的Cookie信息;
所述定期获取待监测的Web页面的步骤包括:
定期将所述Cookie信息以HTTP请求头的方式同获取所述Web页面的请求一并发送给所述Web页面对应的服务器;
接收所述服务器针对所述请求返回的所述Web页面。
4.根据权利要求1所述的方法,其特征在于,所述监测配置信息包括所述Web页面的超文本标记语言HTML代码和所述当前内容块对应的XML路径语言XPath;
所述当前内容块的标题的获得方法包括:
将所述HTML代码解析成对应的DOM树;
根据所述当前内容块对应的XPath,从所述DOM树中提取当前内容块CB;
查询与所述CB相似的兄弟节点的列表CBList;
获取所述CB在所述CBList中的下标i;
将当前内容块CB赋值给循环变量curNode,开始循环,直到找到所述当前内容块的标题;其中,所述循环变量的循环方法包括:
在每一次循环中,先取出所述curNode最左的文本节点TextNode作为候选标题节点candidate,并获取其中的文本内容;
根据标题预设特征,判断所述文本内容是否满足作为当前内容块的标题的条件;
如果满足,则寻找与candidate相似的兄弟节点列表candidates,返回candidates[i]的文本内容作为所述当前内容块的标题;
如果不满足,则将所述当前节点在DOM树中的父节点作为所述candidate,扩大寻找范围,继续循环。
5.根据权利要求4所述的方法,其特征在于,当所述寻找范围大于预设停止条件时,退出所述循环;
若在所述循环中未找到当前内容块的标题,返回一个空的字符串。
6.根据权利要求1所述的方法,其特征在于,计算所述当前内容块与所述初始内容块之间的语义相似度,将所述语义相似度与预设语义阈值进行比较,根据比较结果,确定所述Web页面是否发生变化的步骤包括:
分别提取所述当前内容块与所述初始内容块中的全部文本信息;
计算两个内容块的全部文本信息之间的相似度;
将所述语义相似度与预设语义阈值进行比较;
在所述语义相似度低于预设语义阈值时,确定为所述Web页面发生变化,输出检测到相关变化的结果。
7.根据权利要求1所述的方法,其特征在于,计算所述当前内容块与所述初始内容块的DOM子树的结构相似度的步骤包括:
将所述当前内容块与所述初始内容块各自的DOM子树中的标签按序排列为字符串;
根据两个内容块之间的字符串的编辑距离和所述关键内容,计算结构相似度。
8.根据权利要求7所述的方法,其特征在于,所述将所述当前内容块与所述初始内容块各自的DOM子树中的标签按序排列为字符串的步骤进一步包括:
将压缩后的当前内容块与压缩后的初始内容块各自的DOM树中的标签按序排列为字符串;
其中,对内容块进行压缩的步骤包括:
将内容块CB赋值给经过列表项压缩后的内容块CCB,移除所述CCB的子节点列表children中的全部子节点,将要计算的新的子节点列表cchildren初始化为一个空列表;
对内容块进行深度优先遍历,依次递归地对其每一个子节点执行列表项压缩操作,得到压缩后的子节点cchild;
在cchildren中寻找是否存在与所述cchild结构相似的子节点;
在未寻找到与所述cchild结构相似的子节点时,将压缩后的cchild加入到所述cchildren中;
将所述cchildren赋值为CCB的children,并返回CCB。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当确定为所述Web页面没有发生相关变化时,将此次监测任务获取到的Web页面内容进行存储,作为该Web页面的历史数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911237173.4A CN111158973B (zh) | 2019-12-05 | 2019-12-05 | 一种web应用动态演化监测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911237173.4A CN111158973B (zh) | 2019-12-05 | 2019-12-05 | 一种web应用动态演化监测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111158973A true CN111158973A (zh) | 2020-05-15 |
CN111158973B CN111158973B (zh) | 2021-06-18 |
Family
ID=70556426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911237173.4A Active CN111158973B (zh) | 2019-12-05 | 2019-12-05 | 一种web应用动态演化监测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111158973B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021232748A1 (zh) * | 2020-05-21 | 2021-11-25 | 深圳市商汤科技有限公司 | 数据处理方法、装置、电子设备、存储介质及程序 |
CN114218515A (zh) * | 2021-12-21 | 2022-03-22 | 北京大学 | 一种基于内容分割的Web数字对象提取方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107562600A (zh) * | 2017-08-23 | 2018-01-09 | 广州阿里巴巴文学信息技术有限公司 | 页面检测方法、装置、计算设备以及存储介质 |
CN109344355A (zh) * | 2018-09-26 | 2019-02-15 | 北京因特睿软件有限公司 | 针对网页变化的自动回归检测与块匹配自适应方法和装置 |
CN110083754A (zh) * | 2019-04-23 | 2019-08-02 | 重庆紫光华山智安科技有限公司 | 结构变化网页的自适应数据抽取方法 |
US10491622B2 (en) * | 2017-01-04 | 2019-11-26 | Synack, Inc. | Automatic webpage change detection |
CN111079043A (zh) * | 2019-12-05 | 2020-04-28 | 北京数立得科技有限公司 | 一种关键内容定位方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544255B (zh) * | 2013-10-15 | 2017-01-11 | 常州大学 | 基于文本语义相关的网络舆情信息分析方法 |
CN106960058B (zh) * | 2017-04-05 | 2021-01-12 | 金电联行(北京)信息技术有限公司 | 一种网页结构变更检测方法及系统 |
-
2019
- 2019-12-05 CN CN201911237173.4A patent/CN111158973B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10491622B2 (en) * | 2017-01-04 | 2019-11-26 | Synack, Inc. | Automatic webpage change detection |
CN107562600A (zh) * | 2017-08-23 | 2018-01-09 | 广州阿里巴巴文学信息技术有限公司 | 页面检测方法、装置、计算设备以及存储介质 |
CN109344355A (zh) * | 2018-09-26 | 2019-02-15 | 北京因特睿软件有限公司 | 针对网页变化的自动回归检测与块匹配自适应方法和装置 |
CN110083754A (zh) * | 2019-04-23 | 2019-08-02 | 重庆紫光华山智安科技有限公司 | 结构变化网页的自适应数据抽取方法 |
CN111079043A (zh) * | 2019-12-05 | 2020-04-28 | 北京数立得科技有限公司 | 一种关键内容定位方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021232748A1 (zh) * | 2020-05-21 | 2021-11-25 | 深圳市商汤科技有限公司 | 数据处理方法、装置、电子设备、存储介质及程序 |
CN114218515A (zh) * | 2021-12-21 | 2022-03-22 | 北京大学 | 一种基于内容分割的Web数字对象提取方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111158973B (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111079043B (zh) | 一种关键内容定位方法 | |
CN103023714B (zh) | 基于网络话题的活跃度与集群结构分析系统及方法 | |
JP5370159B2 (ja) | 情報抽出装置及び情報抽出システム | |
US20100107055A1 (en) | Extraction of datapoints from markup language documents | |
CN109376291B (zh) | 一种基于网络爬虫的网站指纹信息扫描的方法及装置 | |
van den Burg et al. | Wrangling messy CSV files by detecting row and type patterns | |
CN111176996A (zh) | 测试用例生成方法、装置、计算机设备及存储介质 | |
CN109325201A (zh) | 实体关系数据的生成方法、装置、设备及存储介质 | |
JP2010501096A (ja) | ラッパー生成およびテンプレート検出の協同最適化 | |
CN106960058B (zh) | 一种网页结构变更检测方法及系统 | |
Hong et al. | Information extraction for search engines using fast heuristic techniques | |
CN107862039B (zh) | 网页数据获取方法、系统和数据匹配推送方法 | |
US11928140B2 (en) | Methods and systems for modifying a search result | |
CN111158973B (zh) | 一种web应用动态演化监测方法 | |
KR20150050140A (ko) | 코퍼스 자동 구축 방법 및 이를 이용한 개체명 인식 방법과 장치 | |
CN109165373B (zh) | 一种数据处理方法及装置 | |
Di Lucca et al. | Clone analysis in the web era: An approach to identify cloned web pages | |
Thamviset et al. | Information extraction for deep web using repetitive subject pattern | |
CN110413307B (zh) | 代码功能的关联方法、装置及电子设备 | |
CN113806647A (zh) | 识别开发框架的方法及相关设备 | |
CN112925874B (zh) | 基于案例标记的相似代码搜索方法及系统 | |
WO2010025062A1 (en) | Automatic test map generation for system verification test | |
JP5380874B2 (ja) | 情報検索方法、プログラム及び装置 | |
Rahman et al. | Recommending relevant sections from a webpage about programming errors and exceptions | |
JP4558369B2 (ja) | 情報抽出システム、情報抽出方法、コンピュータプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |