一种web应用动态演化监测方法转让专利
申请号 : CN201911237173.4
文献号 : CN111158973B
文献日 : 2021-06-18
发明人 : 张颖 , 徐经纬 , 黄罡 , 梅宏
申请人 : 北京大学
摘要 :
权利要求 :
1.一种web应用动态演化监测方法,其特征在于,包括:定期获取待监测的Web页面;
根据预设的监测配置信息中的关键内容,在所述Web页面的文档对象模型DOM树中定位到相应节点;
当无法定位到相应节点时,则确定为所述Web页面变化;
当定位到相应节点时,所述方法包括:在所述Web页面中获得包含所述关键内容的当前内容块;
将所述当前内容块的标题与在初始化监测任务中从所述Web页面获得的初始内容块的标题进行对比;
如果标题非空且相等,则确定为所述Web页面没有发生相关变化;
如果标题非空且不相等,则判断为定位到错误节点,输出检测到相关变化的结果;
如果标题均为空,则计算所述当前内容块与所述初始内容块之间的语义相似度以及DOM子树的结构相似度,并将所述语义相似度与预设语义阈值进行比较,以及将所述结构相似度与预设结构阈值进行比较,根据比较结果,确定所述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,扩大寻找范围,继续循环。
2.根据权利要求1所述的方法,其特征在于,在定期获取待监测的Web页面之前,所述方法包括:
接收用户输入的待监测Web页面的所述监测配置信息;
根据所述监测配置信息,生成用于监测所述待监测Web页面的页面变化的监测任务;
所述初始化监测任务包括:
获取所述Web页面的初始页面信息;
根据所述监测配置信息中的关键内容,在所述初始页面信息中,获得包含所述关键内容的初始内容块。
3.根据权利要求2所述的方法,其特征在于,所述监测配置信息包括所述用户的登录信息和用于验证所述登录信息的Cookie信息;
所述接收用户输入的待监测Web页面的所述监测配置信息的步骤包括:接收用户针对所述Web页面的登录操作,获得该用户的登录信息;
将所述登录信息发送给所述Web页面对应的服务器;
接收所述服务器针对所述登录信息返回的用于验证所述登录信息的Cookie信息;
所述定期获取待监测的Web页面的步骤包括:定期将所述Cookie信息以HTTP请求头的方式同获取所述Web页面的请求一并发送给所述Web页面对应的服务器;
接收所述服务器针对所述请求返回的所述Web页面。
4.根据权利要求1所述的方法,其特征在于,当所述寻找范围大于预设停止条件时,退出所述循环;
若在所述循环中未找到当前内容块的标题,返回一个空的字符串。
5.根据权利要求1所述的方法,其特征在于,计算所述当前内容块与所述初始内容块之间的语义相似度,将所述语义相似度与预设语义阈值进行比较,根据比较结果,确定所述Web页面是否发生变化的步骤包括:分别提取所述当前内容块与所述初始内容块中的全部文本信息;
计算两个内容块的全部文本信息之间的相似度;
将所述语义相似度与预设语义阈值进行比较;
在所述语义相似度低于预设语义阈值时,确定为所述Web页面发生变化,输出检测到相关变化的结果。
6.根据权利要求1所述的方法,其特征在于,计算所述当前内容块与所述初始内容块的DOM子树的结构相似度的步骤包括:将所述当前内容块与所述初始内容块各自的DOM子树中的标签按序排列为字符串;
根据两个内容块之间的字符串的编辑距离和所述关键内容,计算结构相似度。
7.根据权利要求6所述的方法,其特征在于,所述将所述当前内容块与所述初始内容块各自的DOM子树中的标签按序排列为字符串的步骤进一步包括:将压缩后的当前内容块与压缩后的初始内容块各自的DOM树中的标签按序排列为字符串;
其中,对内容块进行压缩的步骤包括:将内容块CB赋值给经过列表项压缩后的内容块CCB,移除所述CCB的子节点列表children中的全部子节点,将要计算的新的子节点列表cchildren初始化为一个空列表;
对内容块进行深度优先遍历,依次递归地对其每一个子节点执行列表项压缩操作,得到压缩后的子节点cchild;
在cchildren中寻找是否存在与所述cchild结构相似的子节点;
在未寻找到与所述cchild结构相似的子节点时,将压缩后的cchild加入到所述cchildren中;
将所述cchildren赋值为CCB的children,并返回CCB。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:当确定为所述Web页面没有发生相关变化时,将此次监测任务获取到的Web页面内容进行存储,作为该Web页面的历史数据。
说明书 :
一种web应用动态演化监测方法
技术领域
背景技术
接的对接,一个系统变化会导致另一个系统不可用;又例如,通过数据采集而完成的舆情监
控,页面结构变化会导致无法继续获取到正确的舆情内容。因此,如何主动地监测到系统页
面的变化成为一个重要的研究点。
为有效的方案。然而,此种方案与Web页面的布局结构有着较强的关联性,Web页面布局的变
化可能使得已有的整合对接方案失效,这也就成为Web应用整合对接中必须考虑的问题。同
时,Web应用变化的不可预知性,使得对变化没有有效的预警方式,无法及时地检测到变化。
题。
发明内容
相似度与预设结构阈值进行比较,根据比较结果,确定所述Web页面是否发生变化。
包括:
面,以及页面中待提取的关键内容;对于需要登录的Web应用,同时还需要用户预先执行一
次登录操作,以便对登录状态进行保持;最后,工具会根据给定的信息,定期地获取待监测
Web页面的HTML代码,将其解析为DOM树;如果不能够在其中定位到某些指定的关键内容,则
会给出CHANGED的变化提示;否则,则通过内容块标题的推理、内容块文本的语义相似度及
内容块DOM树的结构相似度的计算,判断是否存在定位到错误节点的情况,从而决定关键内
容是否发生了相关变化。通过上述方法,可以辅助开发者及时主动地发现目标Web应用页面
结构上的相关变化,以确定已有系统间的对接是否已经失效,在现有技术基础上取得了巨
大进步。
附图说明
具体实施方式
问某政务服务网需要进行变化监测的页面,首先得先在第一个页面中输入社会信用代码并
点击登录,其次还需要在第二页面中点击新建按钮,才能够最终跳转到目标页面。这给页面
的动态演化监测过程带来了困难。
效,进一步可以将结构变化分为两类:如果由于页面结构的变化导致已有的Web应用对接失
效,则称这种变化为相关变化;否则,则为无关变化。
的改变。因此,如何准确对相关变化与无关变化进行区分,成为了页面动态演化监测过程需
要解决的问题。
以记录登录状态信息。
在该Web页面原有的配置页面中作为扩展。当然,也可单独设置针对页面变化监测的配置
页。基于扩展配置方式,在配置页中,通过源页面监测的开关能够开启或关闭对该API所对
应的源页面的变化监测。当选择开启此功能时,会出现页面变化监测的配置项,包括源页面
的URL,页面中关键内容的XPath,以及监控频率(决定本发明的定期时间)。同时,配置中还
包括源系统是否需要登录的开关,如果源Web系统需要进行登录,则打开此开关进行预登录
的配置,本发明实施例所实现的预登录配置包含一个系统登录接口的URL以及一个“预登
录”的按钮,用户只需配置相应接口的URL,并点击“预登录”即可。配置完成后,点击右上方
的保存按钮即可完成对Web页面的监测配置。
以便后续对任务进行读取。可使用MongoDB作为监控任务的存储方案,全部任务存放在一个
Collection中。MongoDB是一款NoSQL型数据库,没有schema限制,因而能够方便的对数据结
构进行调整。任务存储后,需要按照配置定时对任务进行调度执行。如基于SpringBoot提供
的定时任务框架完成监测任务的定时调度。
所述初始化监测任务包括:
不同的内容进行分块显示。因此,在本发明的各个实施例中,将每一个这样的块称为内容
块。同一个内容块中包含的内容一般在同一个语义的上下文中,表达的语义相近,而需要在
页面中获取的关键内容,也基本都集中在某一个或某几个内容块中。内容块的引入,在实现
Web页面的动态演化监测时,使得本发明实施例可以结合内容块的结构及内容块的语义(如
内容块标题)信息,辅助对页面变化进行更加准确的判断。图2为关键内容与内容块关系的
一个实例。
通过页面对应的URL尝试对其内容进行访问,则通常会因为系统的访问控制机制导致页面
跳转到登录页,导致无法获取到需要的页面内容,进而无法检查页面是否发生了变化。因
此,如何处理这种需要登录的场景成为方法必须考虑的问题。针对该问题,在本发明一优选
实施例中示出了所述监测配置信息包括所述用户的登录信息和用于验证所述登录信息的
Cookie信息。
对应的服务器;接收所述服务器针对所述请求返回的所述Web页面。通过上述方法,可通过
基于心跳的Session定期刷新技术对登录状态进行保持,以此最大程度保证能获取到Web页
面,实现对Web页面的后续流程。
信息中的关键内容,对新版本页面中的内容块集合进行相似度的匹配,从而在页面中定位
出包含关键内容的内容块。该内容对应步骤S102中的相应节点。需要说明的是,步骤S102的
具体实现方法依据现有树节点的定位实现,树节点的定位即在给定的树结构中定位出所需
要的节点的过程,一般包括基于节点属性的方式与基于节点路径的方式。XPath基于节点在
树中的路径,将由根节点出发到达目标节点路径上所有节点的标签按顺序排列起来,对每
个节点,再添加上该节点在同一级相同标签的兄弟节点中的次序,最后,以‘/’将这些片段
进行连接,即得到了该节点的XPath。
来以一个实例对该问题做详细的说明,
对应的XPath为//*[@id=’newsrt1_1’]/ul/li/a;图3b是变化之后新版本的页面,从中可
以看出,在原来“综合要闻”、“市县动态”和“国内新闻”这三个标签之前新添加了“国家文
件”与“省文件”这两个标签;图3d是变化后页面的DOM树,如果依然按照之前给定的XPath进
行关键内容的定位,则实际会定位到“省文件”的条目列表。这一变化显然是一个相关变化,
但是,如果仅根据能否在页面中定位到指定的关键内容为标准,并不能够发现这一变化。
件”。所以,如果能够知道内容块对应的标题,则对于上述的变化,通过对比两个页面中找到
的内容块的标题,就可以发现“市县动态”与“省文件”这两个标题并不一致,从而判断页面
发生了相关变化。不过,这些标题信息通常并不会在页面的HTML代码中特别明确的标出,因
此,本发明实施例提出了下述方法:
般是其父节点的第一个子节点,或其祖先节点的最左子节点,多数情况下其节点标签为h1
~h6(第一至六行)。标题节点的附近有时会出现内容为“更多”、“more”等字样的节点。另
外,标题内容的长度通常不会超过10个汉字,并且不包含标点、数字。
先是一个标题的列表,之后跟着每一个标题对应的具体内容的列表。对于后一种情况,需要
在标题列表中确定具体哪一项是与指定的内容块对应的标题,因此,在本发明实施例中,通
过寻找与当前内容块相似兄弟节点的方式,可以同时处理这两种页面的布局。
内容块文本的语义相似度及结构相似度进行判断。
将所述结构相似度与预设结构阈值进行比较,根据比较结果,确定所述页面是否发生变化。
骤可以包括:
同,所述Web页面发生变化的判断结果不同,步骤13为本发明的一种示例。即,在另外一种可
能实现情况中,步骤13也可为:在所述语义相似度高于预设语义阈值时,确定为所述Web页
面发生变化。
结果,确定所述页面是否发生变化,预设结构阈值的设置不同,所述Web页面发生变化的判
断结果不同,可参照步骤13的确定方式。
算方法;计算所述当前内容块与所述初始内容块的DOM树的结构相似度的步骤可以包括:
导致内容块中节点的增删,从而影响到内容块的结构。不过,发明人认为在计算结构相似度
时并不应该考虑这种变化,因为通常开发者会将此部分整体作为一个列表进行处理,而非
关注于单个的列表项。因此,列表项的增删一般不会使得对列表的处理失效。
的内容块的DOM树,后续的结构检查基于该压缩的DOM树以消除由于列表项数目的变化带来
的影响。
的结构。如图4所示,对于最新的内容,页面在列表项的a标签中另外添加了一个sup标签,而
相对较老的列表项则没有这一标签。这种提示性节点通常与实际内容无关,不包含在关键
内容之中,因此这种微妙的结构差异不会对系统间的对接产生影响。如果只对结构完全相
同的列表项节点进行压缩,则可能出现由于新获取到的页面没有新的内容,导致错误地认
为内容块的结构发生了变化。为了能够处理此种情况,算法尝试寻找相似节点而非完全相
同的节点。其次,这里对于节点相似性的度量,考虑到相似节点间的差异较小,算法采用了
按照前序遍历的方式将节点对应的DOM子树中的标签按序排列为字符串,然后通过字符串
的编辑距离,结合指定的关键内容,判定节点的相似度。
定都能够直接通过URL进行访问,可能需要进行一系列的前置操作,如登录、多次点击等导
致获取这类页面内容具有一定的难度的问题。
下步骤,包括:
键内容定位的依据。
分为前端和后端两部分。后端包括之前已经提到过的监测任务管理模块,它又细分为监测
任务存储模块与监测任务调度模块。系统的前端部分则主要包括了监测任务配置界面,监
测任务管理界面,监测结果展示界面,以及系统运行状态管理界面。监测任务配置界面提供
给用户进行页面监测配置的功能,因此它包括了目标页面的URL,关键内容的XPath,以及监
测频率的用户配置接口。另外,对于需要登录才能够访问的目标页面,界面为用户提供了一
个进行系统预登录的接口,并配合后端保存初始的登录状态信息。用户配置完成后,通过界
面的提交接口提交配置信息,将页面监测的配置提交给后端以注册一个新的页面监测任
务。
面的入口,用于开启对一个新的监测任务的配置。监测任务的状态同时也会简单地在该界
面中进行展示,该状态信息如是否检测到界面的变化,以使得用户了解当前监测的结果。界
面提供给用户根据监测状态、目标页面等进行监测任务搜索的接口,用于快速查找某一监
测任务。同时,该界面包含监测结果展示界面的入口,使用户能够获取更加详细的变化检测
以及关键内容定位的结果。
辅助用户后续对页面变化的进行处理。
出的对于登录的处理方法,本实例在实验设计时利用该网站X登录接口,以及该网站X的历
史数据,模拟出了一个需要登录才能够访问到首页的“登录版”网站X系统。该系统包括17个
爬取到的网站X的首页数据,以p_1~p_17对其进行标识,其中p_1~p_16为同一个版本不同
时间的页面,p_17为改版后的页面。每次对该系统的访问会依次返回p_1,p_2,…,p_17所对
应的内容。本实例将使用本发明实施例实现的Web页面变化监测系统对该模拟的网站X系统
进行变化监测及关键内容的定位。
与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。
口,该接口直接的返回完整的页面内容。通过对登录接口的一次调用,相关的Session信息
就会被该Y平台系统管理起来,后续对首页接口的调用即可直接获取到页面内容,同时更新
Session信息,从而保证通过接口能够继续获取到对应的页面数据。登录和首页的接口如图
7c所示。
行关键内容的定位。从图7d所示的系统运行日志可以看到,在第17次执行监测任务时系统
检查到了页面的变化,并给出了CHANGED的结果,符合预期。
证。
存在定位到错误节点的情况。方法首先通过计算最近公共祖先节点得到了内容块的XPath
为//*[@id="newsrt1_1"],在旧版本的页面中,这一路径对应于“市县动态”的内容。在新
版本的首页中,新增了“国家文件”与“省文件”两个标签页。根据上面的XPath会在新版本页
面中定位到“省文件”标签页的内容。方法开始尝试对内容块的标题进行识别,发现了这两
个内容块的标题分别为“市县动态”与“省文件”,两个标题并不相同,因此正确地给出了
CHANGED的检测结果,发现了这一较为特殊的页面变化,从而证明了本发明实施例提出的标
题识别方法的正确性,以及其作为一种变化检测的辅助手段的有效性。
XPath。这79组测试用例中,56组没有发生相关变化,其余23组发生了相关变化。表1为本实
例定义的对于方法变化检测过程的评价指标,本实例主要考察检测的准确率与召回率。
检测无相关变化 0 54
100%。
理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,
在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本
发明的限制。