CN111079043A - 一种关键内容定位方法 - Google Patents
一种关键内容定位方法 Download PDFInfo
- Publication number
- CN111079043A CN111079043A CN201911236209.7A CN201911236209A CN111079043A CN 111079043 A CN111079043 A CN 111079043A CN 201911236209 A CN201911236209 A CN 201911236209A CN 111079043 A CN111079043 A CN 111079043A
- Authority
- CN
- China
- Prior art keywords
- content
- content block
- page
- web page
- node
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明提供了一种关键内容定位方法,包括Web页面动态演化监测阶段与关键内容定位阶段,在Web页面动态演化监测阶段,定期获取待监测的Web页面;根据预设的监测配置信息中的关键内容,在所述Web页面的文档对象模型DOM树中定位到相应节点,并根据相应节点,确定Web页面是否变化;在关键内容定位阶段,将监测阶段获取到的Web页面内容进行存储,作为旧版本页面的历史数据用于后续定位,通过对旧版本页面关键内容文本、结构等特征的提取与融合,在新版本页面中依次定位到内容块及关键内容,最终可视化给出关键内容在新旧版本页面中的映射关系,以及其元素定位方式的变化,辅助开发者对现有的***整合方案进行修复。
Description
技术领域
本发明涉及Web应用技术领域,特别是涉及一种关键内容定位方法。
背景技术
Web应用常常会由于升级、修补漏洞、用户体验优化等导致页面结构发生动态变化。这种变化会给关联***之间的对接产生影响。例如,通过嵌入页面而实现的两个***直接的对接,一个***变化会导致另一个***不可用;又例如,通过数据采集而完成的舆情监控,页面结构变化会导致无法继续获取到正确的舆情内容。
Web应用之间的对接是当前日益增多的需求,从Web应用的表现层入手进行这种整合由于其低成本、非侵入等特性成为目前更为有效的一种方式。然而,Web应用常常会进行动态演化,导致页面结构发生变化,这些变化可能会使得已有的整合方案失效。同时,Web应用变化的不可预知性,使得对变化没有有效的预警方式,无法及时地检测到变化。因此,如何及时主动地发现Web应用页面的变化,并在变化后能够重新定位出关键内容,辅助开发人员进行修复,以保证***继续正确的运行,成为Web应用整合时需要考虑的问题。
上述问题很自然的可以分成两步进行考虑:第一步是变化监测,即定期地对需要检查的Web页面进行监控,以确定页面结构是否发生了改变;第二步为内容定位,即在检测到变化后,根据关键内容的特征,在新版本页面中定位出需要的关键内容。然而,在以上两个步骤的处理中存在着如下的挑战:1)Web页面的变化频繁多样,且部分Web页面需要经过一系列前置操作,如登录、点击等,才能够访问,这给对Web页面变化的检测带来了困难;2)关键内容的特征难以直接从Web页面的HTML代码中获取,需要进行一定的推理计算;3)关键内容一般为Web页面中的文本数据,它们通常对应DOM树的叶子节点,能够提取的特征相对较少,这给对关键内容的定位带来了挑战。
发明内容
本发明提供一种关键内容定位方法,以克服上述技术问题。
为了解决上述问题,本发明公开了一种关键内容定位方法,包括:
定期获取待监测的Web页面;
根据预设的监测配置信息中的关键内容,在所述Web页面的文档对象模型DOM树中定位到相应节点;
当无法定位到相应节点时,则确定为所述Web页面变化;
当定位到相应节点时,从所述Web页面中获得包含所述监测配置信息中的关键内容的当前内容块,并将所述当前内容块的标题与在初始化监测任务中从所述Web页面获得的初始内容块的标题进行对比,确定所述Web页面是否发生变化;
将发生变化后的Web页面作为历史版本页面数据存储;
获取所述历史版本页面数据的全部历史内容块,对每个历史内容块提取结构特征和文本特征;
对全部历史内容块的结构特征和文本特征进行综合,依次定位历史目标内容块及所述历史目标内容块内关键内容,并确定所述历史目标内容块的第一特征;
针对最新监测到的已发生变化的新版本Web页面,获取所述新版本Web页面DOM树的全部子树,将每一个子树作为一个待匹配的内容块,分别对每个待匹配的内容块进行特征的提取;
遍历所有待匹配的内容块,将每个待匹配的内容块的特征与所述历史目标内容块的第一特征进行相似性计算,定位当前目标内容块;
提取所述历史目标内容块内关键内容的第二特征,以及当前目标内容块内关键内容的特征;
根据历史目标内容块内关键内容的第二特征和所述当前目标内容块内关键内容的特征对应各自DOM子树的编辑距离,建立起该关键内容在新版本页面之间的映射关系,在所述当前目标内容块中定位最终关键内容。
与现有技术相比,本发明包括以下优点:
本发明提出了一种关键内容定位方法,包括Web页面动态演化监测阶段与关键内容定位阶段,在Web页面动态演化监测阶段,提出了一种基于DOM树结构的,结合登录状态保持、标题识别、语义及结构相似度的Web页面变化监测方法,开发者或运维人员通过配置需要进行监测的Web页面的URL以及需要获取的关键内容来注册一个页面变化的监测任务,开启对页面的监控;在关键内容定位阶段,提出了一种融合多模态特征,分步递进的页面关键内容定位技术,通过对旧版本页面关键内容文本、结构等特征的提取与融合,在新版本页面中依次定位到内容块及关键内容,最终可视化给出关键内容在新旧版本页面中的映射关系,以及其元素定位方式的变化,辅助开发者对现有的***整合方案进行修复。
附图说明
图1是本发明实施例一种关键内容定位方法的步骤流程图;
图2是关键内容与内容块关系的一个实例的示意图;
图3a是某Web应用的旧版本页面的示意图;
图3b是某Web应用的变化之后新版本的页面的示意图;
图3c是某Web应用的旧版本页面的DOM树的示意图;
图3d是某Web应用的新版本的页面的DOM树的示意图;
图4是内容块列表项之间细微差别示例图;
图5是Web页面变化监测***的整体架构示意图;
图6a是中国知网首页示例p_1的示意图;
图6b是中国知网首页示例p_7的示意图;
图6c是中国知网首页示例p_17的示意图;
图7a是中国知网首页p_1与p_7结构对比示意图;
图7b是中国知网首页p_1与p_17结构对比示意图;
图7c是中国知网登录与首页接口示意图;
图7d是中国知网***运行日志的示意图;
图7e是关键内容定位结果。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
针对本发明的技术问题,由于Web应用的复杂性与多样性,本发明在实现Web页面的动态演化监测与关键内容定位时存在着如下三个挑战:
(1)Web应用本身的复杂性
一方面是应用本身的复杂性。一个Web应用通常包含多个页面,其中的部分页面可能无法直接通过URL进行访问,需要进行一系列的前置操作,如登录、多次点击等。如访问某政务服务网需要进行变化监测的页面,首先得先在第一个页面中输入社会信用代码并点击登录,其次还需要在第二页面中点击新建按钮,才能够最终跳转到目标页面。这给页面的动态演化监测过程带来了困难。
另一方面的复杂性是Web页面变化的复杂性。Web页面的变化频繁且多样,在这些变化中,本发明所关注的是页面DOM树结构或者说布局的变化。而根据是否会导致Web应用间对接失效,进一步可以将结构变化分为两类:如果由于页面结构的变化导致已有的Web应用对接失效,则称这种变化为相关变化;否则,则为无关变化。本发明仅关注其中的相关变化。通常用户容易观察到Web页面DOM树结构的变化,然而根据这一信息难以对相关变化与无关变化做出区分,因为它们都有可能引起页面结构的改变。因此,如何准确对相关变化与无关变化进行区分,成为了页面动态演化监测过程需要解决的问题。
(2)特征的隐蔽性
为了在变化后的页面中定位出关键内容,本发明需要找出关键内容的特征,这些特征在变化前后需要具有一致性。通常,对于Web页面,最直接可以获取到的资源就是页面的HTML代码。然而,HTML代码仅与页面的显示方式有关,在新旧版本的页面之间可能具有较大的差别,因此,能够直接从HTML代码中获取到的标签、属性等信息,通常不能够满足特征的要求。此外,关键内容通常包含着一定的语义信息,如标题或提示性的文字;并且有着某种呈现形式,如包含图片、文本、超链接等多种类型的元素,它们按照一定的规则进行组合。这些信息在页面的新旧版本之间更可能保持一致,因此符合作为特征的要求。不过,此类信息通常不能直接获取到,需要进行一定的计算,这给特征的获取带来了困难。
(3)特征的稀疏性
一般来说获取的关键内容是页面中显示的文本信息,如文章的标题、作者等,这些文本信息通常对应于页面DOM树中的叶子结点,其结构较为简单,包含的信息相对较少,这使得已有技术不能从中提取出足够的特征,从而难以在变化后的页面中对关键内容进行定位。
针对上述挑战,参照图1,示出了本发明实施例一种关键内容定位方法的步骤流程图,具体可以包括以下步骤:
步骤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页面中获得包含所述关键内容的当前内容块,将所述当前内容块的标题与在初始化监测任务中从所述Web页面获得的初始内容块的标题进行对比,确定所述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页面“标题+内容”的展现形式又可能分为下两种情况,第一种情况为一个标题加上紧跟着的实际内容;第二种情况为首先是一个标题的列表,之后跟着每一个标题对应的具体内容的列表。对于后一种情况,需要在标题列表中确定具体哪一项是与指定的内容块对应的标题,因此,在本发明实施例中,通过寻找与当前内容块相似兄弟节点的方式,可以同时处理这两种页面的布局。
在本发明实施例中,根据对比结果,确定所述Web页面是否发生变化可以包括以下情况:
A:如果标题非空且相等,则确定为所述Web页面没有发生相关变化;
B:如果标题非空且不相等,则判断为定位到错误节点,输出检测到相关变化的结果;
C:如果标题均为空,则计算所述当前内容块与所述初始内容块之间的语义相似度以及DOM子树的结构相似度,并将所述语义相似度与预设语义阈值进行比较,以及将所述结构相似度与预设结构阈值进行比较,根据比较结果,确定所述页面是否发生变化。
实际监测中,在遇到没有标题的内容块时,就无法再判断是否定位到了错误节点,无法进一步判断所述Web页面是否发生变化。因此,本发明实施例提出了如情况C的判断方法,结合内容块文本的语义相似度及结构相似度进行判断。
具体实现时,计算所述当前内容块与所述初始内容块之间的语义相似度,将所述语义相似度与预设语义阈值进行比较,根据比较结果,确定所述Web页面是否发生变化的步骤可以包括:
C1:分别提取所述当前内容块与所述初始内容块中的全部文本信息;
C2:计算两个内容块的全部文本信息之间的相似度;
C3:将所述语义相似度与预设语义阈值进行比较;
C4:在所述语义相似度低于预设语义阈值时,确定为所述Web页面发生变化,输出检测到相关变化的结果。
内容块中文本的语义相似度的计算已经有很多成熟的方法,例如可以借助于一些已经训练好的语料模型,在此不做详细介绍。需要说明的是,根据预设语义阈值的设置不同,所述Web页面发生变化的判断结果不同,C4为本发明的一种示例。即,在另外一种可能实现情况中,C4也可为:在所述语义相似度高于预设语义阈值时,确定为所述Web页面发生变化。
就情况C而言,在本发明实施例中,内容块的结构相似度的计算可基于DOM子树之间的编辑距离或对齐距离实现。将所述结构相似度与预设结构阈值进行比较,根据比较结果,确定所述页面是否发生变化,预设结构阈值的设置不同,所述Web页面发生变化的判断结果不同,可参照C4的确定方式。
树的编辑距离由序列的编辑距离引申而来,即通过增、删、改等操作使得一棵树变化为另一棵树。编辑距离越小,则树之间的相似度越高。
形式化地,对于一个有根树T,如果T的每一个节点都被赋予了一个来自有限字符集Σ的符号,则称这棵树为有标号树(labeled tree)。更进一步地,如果T中每一个兄弟节点集的从左往右的顺序被给定,则我们成这棵树为有序树(ordered tree)。在这棵有标号树上进行的操作定义如下:
修改标签(relabel),修改T中节点的标签;
删除(delete),删除一个非根节点,并将被删节点的子节点设置为其父节点的子节点;
根据对上述操作约束条件的不同,树的编辑距离又可细分为不同的子问题:第一种即不对操作做任何限制的普通的树的编辑距离;第二种为***操作必须在删除操作前的树的对齐距离(tree alignment distance)。
令T为一棵有根树,T(v)表示T中以节点v为根的子树,θ表示空树。树的集合为森林,以F表示,如果F中树的顺序是给定的则为一个有序森林,F(v)表示由节点v的子树所组成的森林。T中节点的标签来自有限的字符集Σ,是特殊的空白符号,Σλ=Σ∪λ。γ:(Σλ×Σλ)\\(λ,λ)→R是标签对之间的距离函数,满足三角不等式。
如果给上述每种对树的操作赋予一个开销,则算法所求就是使得开销最小的能够将一棵树转化为另一棵树的操作序列。限于篇幅,本发明实施例将只对最基本的算法的思想进行介绍,其他改进算法的思想都与之类似。
形式化地,如果使用(l1→l2)表示对树的编辑操作,其中γ(l1,l2)∈(∑λ×∑λ)\(λ,λ)。则l2=λ表示节点的删除操作,l1=λ表示节点的***操作,否则,则为修改标签操作。每个编辑操作的开销为γ(l1→l2)=γ(l1,l2),整个编辑序列S的开销于是,树的编辑距离δ(T1,T2)可定义为:δ(T1,T2)=min{γ(S)|S为将T1转化为T2的编辑操作序列。上述定义可以很方便的扩展到森林,δ(F1,F2)表示森林F1与F2之间的编辑距离,在此情景下,每棵树的根节点可以被删除,也可以通过添加一个新的根节点将几棵树合并。令F-v表示从森林F中删除节点v,F-T(v)表示从森林F中删除以v为根的子树。由动态规划的思想可以得出以下递推式:
δ(θ,θ)=0 δ(F1,θ)=δ(F1-v,θ)+γ(v→λ);
δ(θ,F2)=δ(θ,F2-w)+γ(λ→w)
由此,可以计算出δ(F1,F2),从而得到δ(T1,T2)。上述算法仅仅作为该类算法思想介绍的例子,其算法复杂度为O(|F1|2|F2|2)。目前所知的对于该类问题的算法,复杂度最低能够达到O(|T1||T2|)。上述思想均为现有技术,本发明只是引出为本便于本领域技术人员理解,在此不多赘述。
优选的,采用树的编辑距离作为计算方法;计算所述当前内容块与所述初始内容块的DOM子树的结构相似度的步骤可以包括:将所述当前内容块与所述初始内容块各自的DOM树中的标签按序排列为字符串;根据两个内容块之间的字符串的编辑距离和所述关键内容,计算结构相似度。
在实际监测时,内容块中包含的列表元素会给对内容块结构相似度的计算带来一些特殊的问题,最主要体现在列表元素的个数不固定的情况。列表元素个数前后的变化会导致内容块中节点的增删,从而影响到内容块的结构。不过,发明人认为在计算结构相似度时并不应该考虑这种变化,因为通常开发者会将此部分整体作为一个列表进行处理,而非关注于单个的列表项。因此,列表项的增删一般不会使得对列表的处理失效。针对这一问题,根据两个内容块之间的字符串的编辑距离和所述关键内容,计算结构相似度可采用以下步骤进行处理:
将压缩后的当前内容块与压缩后的初始内容块各自的DOM子树中的标签按序排列为字符串;
其中,对内容块进行压缩的步骤包括:
将内容块CB赋值给经过列表项压缩后的内容块CCB,移除所述CCB的子节点列表children中的全部子节点,将要计算的新的子节点列表cchildren初始化为一个空列表;
对内容块进行深度优先遍历,依次递归地对其每一个子节点执行列表项压缩操作,得到压缩后的子节点cchild;
在cchildren中寻找是否存在与所述cchild结构相似的子节点;
在未寻找到与所述cchild结构相似的子节点时,将压缩后的cchild加入到所述cchildren中;
将所述cchildren赋值为CCB的children,并返回CCB。
本发明实施例提出了对内容块中列表元素的压缩算法,采取自底向上的方式对相似的列表项进行压缩,最终仅保留其中一项作为对列表项结构的描述。最终输出经过压缩的内容块的DOM子树,后续的结构检查基于该压缩的DOM子树以消除由于列表项数目的变化带来的影响。
需要说明的是,在本发明实施例中,之所以寻找相似的节点而不是完全相同的节点,是存在这种情况:很多Web页面为了对重要内容进行强调,会对该列表项使用一些特殊的结构。如图4所示,对于最新的内容,页面在列表项的a标签中另外添加了一个sup标签,而相对较老的列表项则没有这一标签。这种提示性节点通常与实际内容无关,不包含在关键内容之中,因此这种微妙的结构差异不会对***间的对接产生影响。如果只对结构完全相同的列表项节点进行压缩,则可能出现由于新获取到的页面没有新的内容,导致错误地认为内容块的结构发生了变化。为了能够处理此种情况,算法尝试寻找相似节点而非完全相同的节点。其次,这里对于节点相似性的度量,考虑到相似节点间的差异较小,算法采用了按照前序遍历的方式将节点对应的DOM子树中的标签按序排列为字符串,然后通过字符串的编辑距离,结合指定的关键内容,判定节点的相似度。
综上,通过步骤S101~步骤S104,辅助开发者及时主动地发现目标Web应用页面结构上的相关变化,以确定已有***间的对接是否已经失效,克服了现有Web应用中的页面并不一定都能够直接通过URL进行访问,可能需要进行一系列的前置操作,如登录、多次点击等导致获取这类页面内容具有一定的难度的问题。
接下来,如何在变化后的页面中定位出关键内容,辅助开发者对Web应用间的整合对接进行修复是本发明还需要解决的问题。继续参照图1,具体还可以包括以下步骤:
步骤S105,将发生变化后的Web页面作为历史版本页面数据存储;
为了便于开发这在检测到页面变化后,本发明实施例在确定为所述Web页面没有发生相关变化时,将此次监测任务获取到的Web页面内容进行存储,作为该Web页面的历史版本页面数据。本发明实施例所存储的历史版本页面数据,可作为后续关键内容定位的依据。
步骤S106,获取所述历史版本页面数据的全部历史内容块,对每个历史内容块提取结构特征和文本特征;
步骤S107,对全部历史内容块的结构特征和文本特征进行综合,依次定位历史目标内容块及所述历史目标内容块内关键内容,并确定所述历史目标内容块的第一特征;
关键内容的定位需要基于关键内容的不变特征,然而关键内容通常是页面中的文本信息,其结构较为简单,包含的特征信息相对较少;不过关键内容在Web页面中的分布通常较为集中,包含在一个相对更大的内容块中,这个内容块一般具有更加丰富的结构,因此能够获取到更为丰富的特征。因此,本发明将关键内容的定位过程又划分为了两个步骤:内容块的定位和内容块内关键内容的定位。这一步对内容块的特征进行提取,这些特征包括结构特征、文本特征等。
在本发明实施例中,所述结构特征可从每个历史内容块对应的DOM子树的结构获得,包括:
DOM子树高度与整个页面对应的DOM树高度的比率;其中DOM子树高度为从该历史内容块对应的DOM子树的根节点到其叶子节点的最长路径的长度。
DOM子树的节点数量与整个页面对应的DOM树的节点数量的比率;节点数量仅考虑标签节点而不考虑文本节点。
DOM子树中图片节点的比率;即DOM子树中标签为img的节点的数量与DOM子树节点总数的比值。
DOM子树中文本节点的比率;即DOM子树中标签为p的节点的数量与DOM子树节点总数的比值。
DOM子树中超链接节点的比率;即DOM子树中标签为a的节点的数量与DOM子树节点总数的比值。
所述文本特征从每个历史内容块的HTML代码中获得,包括:
内容块的标题;
内容块包含的文本;
内容块包含的文本长度与页面总文本长度的比率;
内容块中超链接的公共前缀。
上述特征都是针对单个内容块而言,在进行内容块特征提取时,本发明实施例通常已经保存了多个历史页面,因而存在多个历史内容块。对每一个历史内容块可以分别提取出上述的特征,然后进一步地对全部内容块的特征进行综合,用于最终内容块(即历史目标内容块)的定位。
具体实现时,对于特征中的数值型特征,包括各种比率信息,本发明实施例的方法是通过对这些特征值求取平均值的方式对其进行综合;对于内容块的标题,由于历史内容块中都没有发生重要变化,因此这些内容块的标题必然都是一致的,因此不需进一步处理;对于内容块所包含的文本,在对多个内容块进行考虑时,本发明实施例采取将文本信息进行拼接的方式计算出最终的综合特征;最后,对于内容块中超链接的公共前缀,如果全部内容块中此特征均相等,则直接使用该特征值,否则该项特征为空字符串。除了直接根据每一个内容块的特征进行计算得出新的综合特征外,当从全部内容块的角度考虑时,本发明实施例进一步可以得到如下特征:内容块中的公共文本内容,即在每个内容块中相同位置出现的且出现次数大于1的文本内容。
本发明实施例对上述部分特征的选取做简单解释。结构特征的选取基于如下的假设,内容块变化前后其基本的结构特性通常不会发生特别大的变化,具有一定的相似性。文本特征中,内容块的标题直接与内容块所表达的语义相关,变化前后能够保持一致。超链接通常与Web应用的文件组织结构有一定关联,而Web应用的文件组织结构一般不会频繁发生变化,因此超链接的内容在页面变化前后具有一定的一致性。公共文本一般是出现在页面模板中的文字,通常会揭示数据项的语义,如表格的表头内容,表明了表格每一列数据的含义,因此在变化中具有稳定性。
接下来,进一步对公共文本特征的提取做一些说明,该特征的提取可以与变化检测过程相结合,并随着每次的检测而更新。在情况C中提及到对关键内容进行变化检测时,可通过树的编辑距离计算内容块之间的相似度。在计算的过程中,会得到两个内容块中节点间的一个映射。在每一个相对应的节点对中,如果是包含文本的叶子节点,分别提取节点中的文本信息则可以得到一个文本字符串对。最后,对这两个文本字符串进行分词并去除停用词,然后在剩下的词序列中计算最长公共序列,就可以获取其中的公共文本部分。在每一次获取到新的Web页面时,都与初始Web页面按照上述过程计算出公共文本部分,并对其进行标注,则最终每一次都被标注过的文本即为内容块的公共文本特征。
步骤S108,针对最新监测到的已发生变化的新版本Web页面,获取所述新版本Web页面DOM树的全部子树,将每一个子树作为一个待匹配的内容块,分别对每个待匹配的内容块进行特征的提取;
此步骤中,针对新版本Web页面的内容块的特征的提取可参照步骤S106~步骤S107中对历史内容块特征提取的阐述,在此不多赘述。
步骤S109,遍历所有待匹配的内容块,将每个待匹配的内容块的特征与所述历史目标内容块的第一特征进行相似性计算,定位当前目标内容块;
提取出新版本Web页面的每个待匹配的内容块的上述的各类特征后,开始进行新旧版本页面内容块的匹配,即将新版本页面的每个待匹配的内容块与旧版本页面中的历史目标内容块进行匹配,相似性的计算基于该综合特征与待检验的内容块的特征。具体实现时,本发明实施例将内容块的匹配过程建模为一个搜索的过程,新版本页面可视为多个待搜索(待匹配)的内容块的集合,需要从中寻找到与历史目标内容块最为相似的内容块。匹配算法中,首先从变化后的页面中提取出待搜索的内容块集合,随后遍历集合中的内容块,与目标块进行相似度的计算。如果当前遍历到的内容块优于之前已找到的最优内容块,则算法更新最优结果。全部待搜索内容块遍历完成后,算法返回得到的最优的内容块。
上述算法中,从页面中提取出待搜索的内容块的集合的规则如下:1)如果目标内容块综合特征中标题内容不为空,则首先在新版本的页面中根据标题内容找出标题节点,将该节点加入待搜索的内容块集合。随后,依次找到该节点的父节点,判断该节点是否为其父节点的第一个子节点,如果是,则将其父节点加入到待搜索内容块集合,并继续寻找父节点的父节点,进行同样的判断;否则,停止寻找,即得到待搜索的内容块集合。2)如果目标内容块综合特征中标题内容为空,则直接将新版本页面DOM树的全部子树加入到待搜索的内容块集合。
相似度的计算依赖于内容块的特征,然而特征值的类型多样,包括了数值型特征与文本特征,难以直接进行相似度的计算,需要对特征进行一定的预处理。通常的处理方式是将各类特征均转化为数值型,形成特征向量,然后利用特征向量计算余弦相似度。如转化后目标内容块的特征向量为<α1,α2,...,αn>,待检查的内容块的特征向量为<b1,b2,...,bn>,则这两个内容块之间的相似度定义为:
本发明实施例对特征的预处理方式为,对于数值型特征,不做处理直接使用特征的值;对于内容块的文本特征,将每个待搜索内容块与目标内容块中的文本看做单个文档,全部文档构成一个语料库,然后通过TF-IDF将每个文档转化为向量;对于超链接特征,如果待搜索内容块的公共超链接前缀与目标内容块的公共超链接前缀相等,则该内容块应该拥有更高的相似度,因此,对该特征的处理为:如果与目标前缀相等则为1,否则为0;对于公共文本特征,其处理方式与超链接特征类似,即如果待搜索内容块中包含该文本,则向量的对应位置设置为1,否则设置为0。至此,全部的特征均已经进行了一定的转化,得到了一个可用于相似度计算的特征向量。
然后根据可用于相似度计算的特征向量,在新版本Web页面中定位当前目标内容块。
步骤S110,提取所述历史目标内容块内关键内容的第二特征,以及当前目标内容块内关键内容的特征;
定位到当前目标内容块后,需要进一步对该内容块中包含的关键内容进行映射定位。针对目标内容块内关键内容的特征提取思路可参照步骤S106~步骤S107中对历史内容块特征提取的阐述。具体采取一种类似递归下降的方式,类比内容块的定位过程,如果将匹配到的内容块看做整个网页,需要定位到的关键内容看做之前需要定位的内容块,即相当于对内容块进行放大,则可以采取同样的匹配过程在内容块中做关键内容的定位。首先,仍然是对关键内容的特征进行提取,特征包括关键内容的标签、属性、在内容块中的相对位置等。
在定位到包含关键内容的内容块后,由于内容块内部的结构也可能存在差异,因此需要接着在内容块的内部进行关键内容的重新定位。正如之前提到的,关键内容基本对应于页面DOM树的叶子节点,因此对其特征的提取更多是基于数据所在节点的标签以及其文本内容的某些特性,即历史目标内容块内关键内容的第二特征从历史目标内容块内关键内容对应的页面DOM树的叶子节点获得,具体包括:节点的标签;节点文本的长度;节点文本的数据模式;节点的id与class属性。
步骤S111,根据历史目标内容块内关键内容的第二特征和所述当前目标内容块内关键内容的特征对应各自DOM子树的编辑距离,建立起该关键内容在新版本页面之间的映射关系,在所述当前目标内容块中定位最终关键内容。
本发明实施例关键内容的匹配与内容块的匹配不同,对关键内容的匹配采用了树的编辑距离来计算关键内容节点间的映射关系。节点的标签,节点文本的长度,节点文本的数据模式以及节点的id与class属性用于节点对的匹配开销的计算,即本发明实施例情况C中提到的γ函数。同样的首先对特征进行预处理:
节点标签特征的处理,选取了常见的10个HTML标签,加上其他标签组成11个类别,采取独热编码(One-Hot Encoding)的方式将该特征转化为11维的向量;
节点文本长度特征的处理,直接采用长度值作为最终特征向量的一维;
节点文本数据模式特征的处理,本发明实施例以正则表达式的方式预定义了日期、邮箱、电话、温度等信息的常见格式,通过正则匹配的结果判断该文本内容是否属于某种信息类别,最后同样使用独热编码的方式将特征转化为向量。
id与class特征的处理,根据是否与目标内容的id及class相等进行类别上的划分。
将历史目标内容块内关键内容的第二特征和当前目标内容块内关键内容的特征进行预处理后,根据每个特征(第二特征或当前目标内容块内关键内容的特征)对应各自DOM子树的编辑距离,建立起该关键内容在新版本页面之间的映射关系,最小的编辑距离能够得到树中节点的一个映射关系,该映射关系即作为最终关键内容间的映射,以此在所述当前目标内容块中定位最终关键内容,完成最终关键内容的定位。
综上,步骤S105~步骤S111,提出了一种融合多模态特征,分步递进的页面关键内容定位技术,通过对旧版本页面关键内容文本、结构等特征的提取与融合,在新版本页面中依次定位到内容块及关键内容,最终可视化给出关键内容在新旧版本页面中的映射关系,以及其元素定位方式的变化,辅助开发者对现有的***整合方案进行修复。
为实现上述监测方法在实际中的应用,应用所述Web页面的***会把本发明实施例的监测流程封装并服务化,同时提供友好的用户交互。***的整体架构如图5所示,主要分为前端和后端两部分。后端包括之前已经提到过的监测任务管理模块,它又细分为监测任务存储模块与监测任务调度模块,还有页面获取模块,页面存储模块,页面变化检测模块,以及关键内容定位模块。除此之外,还添加了变化通知模块和***状态自检模块。变化通知模块负责在检测到变化,并且完成关键内容的定位流程后,给开发者或***运维人员发送页面变化的通知,以便及时了解到页面的变化,并对其做出应对;***状态自检模块则是***对于自身运行状态进行检查的模块,由于***可能会以微服务的方式与其他的应用***整合,因此对于***自身状态的检查是至关重要的。后端接口包括功能接口及对外提供的对***功能访问的接口,本发明实施例的后端接口如表1所示。
表1
接口名称 | 描述 |
监测任务注册接口 | 用于接收用户的监测配置,并生成一个页面监测任务 |
监测列表获取接口 | 用于获取当前全部已注册的页面监测任务 |
监测任务修改接口 | 用于对已有的页面监测任务的配置进行修改 |
监测任务删除接口 | 用于删除某一个页面监测任务 |
监测任务启动/停止接口 | 用于对页面监测任务执行暂停/重启的操作 |
监测结果获取接口 | 用于获取某一个页面监测任务的结果 |
***运行状态获取接口 | 用于获取当前整个***的运行状态 |
***的前端部分则主要包括了监测任务配置界面,监测任务管理界面,监测结果展示界面,以及***运行状态管理界面。监测任务配置界面提供给用户进行页面监测配置的功能,因此它包括了目标页面的URL,关键内容的XPath,以及监测频率的用户配置接口。另外,对于需要登录才能够访问的目标页面,界面为用户提供了一个进行***预登录的接口,并配合后端保存初始的登录状态信息。用户配置完成后,通过界面的提交接口提交配置信息,将页面监测的配置提交给后端以注册一个新的页面监测任务。
监测任务管理界面为用户展示已经注册过的页面监测任务列表,并提供对监控任务进行编辑、开始/停止、删除等生命周期管理的接口。界面同时包含触发监测任务配置界面的入口,用于开启对一个新的监测任务的配置。监测任务的状态同时也会简单地在该界面中进行展示,该状态信息如是否检测到界面的变化,以使得用户了解当前监测的结果。界面提供给用户根据监测状态、目标页面等进行监测任务搜索的接口,用于快速查找某一监测任务。同时,该界面包含监测结果展示界面的入口,使用户能够获取更加详细的变化检测以及关键内容定位的结果。
监测结果展示界面用于详细展示对目标页面的监测结果,包括页面变化的检测与关键内容的定位,可视化地将新旧版本页面内容块以及关键内容的对应关系展示给用户,辅助用户后续对页面变化的进行处理。
***运行状态管理界面用于展示***的自检状态,帮助用户了解当前***的运行状态。
***运行状态管理界面用于展示***的自检状态,帮助用户了解当前***的运行状态。
针对监测任务配置界面、监测任务管理界面与监测结果展示界面,其具体实现过程可包括:用户进入***后首先进入到监测任务管理界面,可以看到已注册的全部监测任务。每一个监测任务的“状态”列可以看到该任务当前的监测状态,“操作”列对任务进行控制。界面的右上方是有一个“添加”按钮,点击该按钮可以弹出监测任务配置界面。配置界面包含一个目标Web页面的URL的输入框,以及可动态添加条目的关键内容XPath输入框。同时,界面还包含目标***是否需要登录的开关,如果打开开关,可以点击“预登录”按钮,此时***会打开一个新的界面并跳转到目标Web应用,用户可在此进行登录操作,此次登录的信息会被记录下来保存在监测任务的配置中。完成配置后,用户可以点击“添加”按钮对配置的监测任务进行添加,该任务随后会出现在任务列表中。当监测任务检查到Web页面的变化并完成关键内容的定位过程后,任务的“状态”一栏会变为“异常”,点击该状态,会弹出监测结果展示界面。监测结果展示界面可视化地展示了新旧版本页面中内容块和关键内容的映射关系,以及关键内容在新版本页面中的XPath。
接下来,采用一具体示例对本发明实施例的一种关键内容定位方法的效果进行验证。
首先,应用本发明实施例的方法对几个实际的具有代表性的Web应用变化实例进行了变化的检测与关键内容的定位,结果表明本发明实施例所提出的方法能够检测到Web页面的变化,并且在变化后的Web页面里定位到所需的关键内容,证明了方法的有效性。随后,在更多的能够覆盖常见Web页面类型的18个网站的页面数据集上分别对本文方法的变化检测及内容定位过程的准确性进行了验证。结果表明,本发明实施例的方法对于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的结果,符合预期。***随后在变化后的页面中进行内容块的定位以及关键内容的映射,对于这个例子,本发明实施例提出的标题识别算法能够识别到内容块的标题为“知网动态”,因此根据标题信息只在新版本的页面中检查包含标题的内容块,最终***计算的内容块匹配结果以及关键内容的映射关系如图7e所示。可以看到,对于本例,本发明实施例的方法能够准确地在页面中定位到关键内容。
二、实例研究——某省知识产权局
本实例将以某省知识产权局***为例(图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组发生了相关变化。表2为本实例定义的对于方法变化检测过程的评价指标,本实例主要考察检测的准确率与召回率。
表2变化检测评价指标
表3变化检测结果
实际有相关变化 | 实际无相关变化 | |
检测有相关变化 | 23 | 2 |
检测无相关变化 | 0 | 54 |
表3是对上述79组测试用例进行变化检测的结果,从中可以看到,本文提出的Web页面变化检测方法的准确率达到了P=23/(23+2)=92%,而召回率则是:R=23/(23+0)=100%。
因此,本发明实施例的检测方法对Web页面变化的检测具有较高的准确性。
接着是内容块的定位过程。本示例给出的内容块的定位结果是一个内容块的推荐列表,因此,在对内容块定位过程进行效果验证时,选择了表4所示的两个评价指标。实验数据则继续采用上面的18个Web***的页面,对每一个Web***选取了一系列的旧版本页面和一个新版本页面形成一个测试用例,一共得到了18组测试用例。将这些测试用例作为输入传递给本文的内容块定位过程,并对过程输出的定位结果进行了统计,具体结果如表5所示。
表4内容块定位评价指标
指标名称 | 指标含义 |
推荐准确率(P1) | 目标内容块在推荐列表前五的比率 |
最佳推荐准确率(P2) | 目标内容块在推荐列表第一的比率 |
表5内容块定位结果
推荐个数 | 16 |
最佳推荐个数 | 14 |
根据实验结果,本示例内容块定位过程的推荐准确率为荐准确率为P1=16/18=88.9%;最佳推荐准确率为P2=14/18=77.8%。所以,本发明实施例对内容块的定位过程具有比较好的准确性。
最后,对关键内容映射过程进行效果验证。从上述18个Web***中选出了18组新旧版本的页面对,并且人工指定了内容块在新旧版本页面中的位置,将这些信息作为输入传递给关键内容映射模块。根据统计,在全部的旧版本内容块中,共包含349个待映射的关键内容项,以映射的准确率作为对该过程的评价指标。最终结果显示,本实例的关键内容映射方法正确地映射了319个关键内容项,映射的准确率为91.4%,说明本发明实施例的方法对于关键内容的映射具有较高的准确率。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本发明所提供的一种关键内容定位方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种关键内容定位方法,其特征在于,包括:
定期获取待监测的Web页面;
根据预设的监测配置信息中的关键内容,在所述Web页面的文档对象模型DOM树中定位到相应节点;
当无法定位到相应节点时,则确定为所述Web页面变化;
当定位到相应节点时,从所述Web页面中获得包含所述监测配置信息中的关键内容的当前内容块,并将所述当前内容块的标题与在初始化监测任务中从所述Web页面获得的初始内容块的标题进行对比,确定所述Web页面是否发生变化;
将发生变化后的Web页面作为历史版本页面数据存储;
获取所述历史版本页面数据的全部历史内容块,对每个历史内容块提取结构特征和文本特征;
对全部历史内容块的结构特征和文本特征进行综合,依次定位历史目标内容块及所述历史目标内容块内关键内容,并确定所述历史目标内容块的第一特征;
针对最新监测到的已发生变化的新版本Web页面,获取所述新版本Web页面DOM树的全部子树,将每一个子树作为一个待匹配的内容块,分别对每个待匹配的内容块进行特征的提取;
遍历所有待匹配的内容块,将每个待匹配的内容块的特征与所述历史目标内容块的第一特征进行相似性计算,定位当前目标内容块;
提取所述历史目标内容块内关键内容的第二特征,以及当前目标内容块内关键内容的特征;
根据历史目标内容块内关键内容的第二特征和所述当前目标内容块内关键内容的特征对应各自DOM子树的编辑距离,建立起该关键内容在新版本页面之间的映射关系,在所述当前目标内容块中定位最终关键内容。
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.根据权利要求1所述的方法,其特征在于,将所述当前内容块的标题与在初始化监测任务中从所述Web页面获得的初始内容块的标题进行对比,确定所述Web页面是否发生变化的步骤包括:
将所述当前内容块的标题与在初始化监测任务中从所述Web页面获得的初始内容块的标题进行对比;
如果标题非空且相等,则确定为所述Web页面没有发生相关变化;
如果标题非空且不相等,则判断为定位到错误节点,输出检测到相关变化的结果;
如果标题均为空,则计算所述当前内容块与所述初始内容块之间的语义相似度以及DOM子树的结构相似度,并将所述语义相似度与预设语义阈值进行比较,以及将所述结构相似度与预设结构阈值进行比较,根据比较结果,确定所述Web页面是否发生变化。
6.根据权利要求5所述的方法,其特征在于,计算所述当前内容块与所述初始内容块之间的语义相似度,将所述语义相似度与预设语义阈值进行比较,根据比较结果,确定所述Web页面是否发生变化的步骤包括:
分别提取所述当前内容块与所述初始内容块中的全部文本信息;
计算两个内容块的全部文本信息之间的相似度;
将所述语义相似度与预设语义阈值进行比较;
在所述语义相似度低于预设语义阈值时,确定为所述Web页面发生变化,输出检测到相关变化的结果。
7.根据权利要求5所述的方法,其特征在于,计算所述当前内容块与所述初始内容块的DOM子树的结构相似度的步骤包括:
将所述当前内容块与所述初始内容块各自的DOM子树中的标签按序排列为字符串;
根据两个内容块之间的字符串的编辑距离和所述监测配置信息中的关键内容,计算结构相似度。
8.根据权利要求7所述的方法,其特征在于,将所述当前内容块与所述初始内容块各自的DOM子树中的标签按序排列为字符串的步骤进一步包括:
将压缩后的当前内容块与压缩后的初始内容块各自的DOM子树中的标签按序排列为字符串;
其中,对内容块进行压缩的步骤包括:
将内容块CB赋值给经过列表项压缩后的内容块CCB,移除所述CCB的子节点列表children中的全部子节点,将要计算的新的子节点列表cchildren初始化为一个空列表;
对内容块进行深度优先遍历,依次递归地对其每一个子节点执行列表项压缩操作,得到压缩后的子节点cchild;
在cchildren中寻找是否存在与所述cchild结构相似的子节点;
在未寻找到与所述cchild结构相似的子节点时,将压缩后的cchild加入到所述cchildren中;
将所述cchildren赋值为CCB的children,并返回CCB。
9.根据权利要求1所述的方法,其特征在于,所述结构特征从每个历史内容块对应的DOM子树的结构获得,包括:
DOM子树高度与整个页面对应的DOM树高度的比率;
DOM子树的节点数量与整个页面对应的DOM树的节点数量的比率;
DOM子树中图片节点的比率;
DOM子树中文本节点的比率;
DOM子树中超链接节点的比率;
所述文本特征从每个历史内容块的HTML代码中获得,包括:
内容块的标题;
内容块包含的文本;
内容块包含的文本长度与页面总文本长度的比率;
内容块中超链接的公共前缀。
10.根据权利要求1所述的方法,其特征在于,所述第二特征从历史目标内容块内关键内容对应的页面DOM树的叶子节点获得,包括:
节点的标签;
节点文本的长度;
节点文本的数据模式;
节点的id与class属性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911236209.7A CN111079043B (zh) | 2019-12-05 | 2019-12-05 | 一种关键内容定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911236209.7A CN111079043B (zh) | 2019-12-05 | 2019-12-05 | 一种关键内容定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111079043A true CN111079043A (zh) | 2020-04-28 |
CN111079043B CN111079043B (zh) | 2023-05-12 |
Family
ID=70313188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911236209.7A Active CN111079043B (zh) | 2019-12-05 | 2019-12-05 | 一种关键内容定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111079043B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158973A (zh) * | 2019-12-05 | 2020-05-15 | 北京大学 | 一种web应用动态演化监测方法 |
CN111966880A (zh) * | 2020-08-17 | 2020-11-20 | 江苏百达智慧网络科技有限公司 | 可视化网站内容采集方法和*** |
CN112417351A (zh) * | 2020-10-21 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 用户视觉轨迹的确定方法、装置、计算机设备及存储介质 |
CN112799955A (zh) * | 2021-02-08 | 2021-05-14 | 腾讯科技(深圳)有限公司 | 模型变更的检测方法、装置和存储介质及电子设备 |
CN113177168A (zh) * | 2021-04-29 | 2021-07-27 | 上海云扩信息科技有限公司 | 一种基于Web元素属性特征的定位方法 |
CN113626028A (zh) * | 2020-05-07 | 2021-11-09 | 腾讯科技(深圳)有限公司 | 一种页面元素的映射方法及装置 |
WO2021232748A1 (zh) * | 2020-05-21 | 2021-11-25 | 深圳市商汤科技有限公司 | 数据处理方法、装置、电子设备、存储介质及程序 |
CN115658993A (zh) * | 2022-09-27 | 2023-01-31 | 观澜网络(杭州)有限公司 | 一种网页的核心内容的智能化抽取方法及*** |
CN116112434A (zh) * | 2023-04-12 | 2023-05-12 | 深圳市网联天下科技有限公司 | 一种路由器数据智能缓存方法及*** |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727486A (zh) * | 2009-12-04 | 2010-06-09 | 中国人民解放军信息工程大学 | 一种Web论坛信息抽取*** |
US20110302486A1 (en) * | 2010-06-03 | 2011-12-08 | Beijing Ruixin Online System Technology Co., Ltd | Method and apparatus for obtaining the effective contents of web page |
CN102890681A (zh) * | 2011-07-20 | 2013-01-23 | 阿里巴巴集团控股有限公司 | 一种生成网页结构模板的方法及*** |
CN103514203A (zh) * | 2012-06-27 | 2014-01-15 | 腾讯科技(深圳)有限公司 | 以阅读模式浏览网页的方法及*** |
US8655913B1 (en) * | 2012-03-26 | 2014-02-18 | Google Inc. | Method for locating web elements comprising of fuzzy matching on attributes and relative location/position of element |
CN103607342A (zh) * | 2013-11-07 | 2014-02-26 | 北京奇虎科技有限公司 | 一种邮件内容的加载方法和装置 |
US20140317754A1 (en) * | 2013-04-18 | 2014-10-23 | F-Secure Corporation | Detecting Unauthorised Changes to Website Content |
US20170024472A1 (en) * | 2015-07-23 | 2017-01-26 | Green Prestige Pte. Ltd. | Information retrieval method utilizing webpage visual and language features and system using thereof |
CN109271477A (zh) * | 2018-09-05 | 2019-01-25 | 杭州数湾信息科技有限公司 | 一种借助互联网构建分类语料库的方法及*** |
CN109344355A (zh) * | 2018-09-26 | 2019-02-15 | 北京因特睿软件有限公司 | 针对网页变化的自动回归检测与块匹配自适应方法和装置 |
-
2019
- 2019-12-05 CN CN201911236209.7A patent/CN111079043B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727486A (zh) * | 2009-12-04 | 2010-06-09 | 中国人民解放军信息工程大学 | 一种Web论坛信息抽取*** |
US20110302486A1 (en) * | 2010-06-03 | 2011-12-08 | Beijing Ruixin Online System Technology Co., Ltd | Method and apparatus for obtaining the effective contents of web page |
CN102890681A (zh) * | 2011-07-20 | 2013-01-23 | 阿里巴巴集团控股有限公司 | 一种生成网页结构模板的方法及*** |
US8655913B1 (en) * | 2012-03-26 | 2014-02-18 | Google Inc. | Method for locating web elements comprising of fuzzy matching on attributes and relative location/position of element |
CN103514203A (zh) * | 2012-06-27 | 2014-01-15 | 腾讯科技(深圳)有限公司 | 以阅读模式浏览网页的方法及*** |
US20140317754A1 (en) * | 2013-04-18 | 2014-10-23 | F-Secure Corporation | Detecting Unauthorised Changes to Website Content |
CN103607342A (zh) * | 2013-11-07 | 2014-02-26 | 北京奇虎科技有限公司 | 一种邮件内容的加载方法和装置 |
US20170024472A1 (en) * | 2015-07-23 | 2017-01-26 | Green Prestige Pte. Ltd. | Information retrieval method utilizing webpage visual and language features and system using thereof |
CN109271477A (zh) * | 2018-09-05 | 2019-01-25 | 杭州数湾信息科技有限公司 | 一种借助互联网构建分类语料库的方法及*** |
CN109344355A (zh) * | 2018-09-26 | 2019-02-15 | 北京因特睿软件有限公司 | 针对网页变化的自动回归检测与块匹配自适应方法和装置 |
Non-Patent Citations (5)
Title |
---|
D. C. REIS; P. B. GOLGHER; A. S. SILVA; A. F. LAENDER: "Automatic Web News Extraction Using Tree Edit Distance" * |
YUEKUI YANG; YAJUN DU; YUFENG HAI; ZHAOQIONG GAO: "A Topic-Specific Web Crawler with Web Page Hierarchy Based on HTML Dom-Tree" * |
李朝; 彭宏; 叶苏南; 张欢; 杨亲遥: "基于DOM树的可适应性Web信息抽取" * |
王宇龙等: "融合结构和内容特征提取多类型网页文本要素", 《山西大学学报(自然科学版)》 * |
王琦,唐世渭,杨冬青,王腾蛟: "基于DOM的网页主题信息自动提取" * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158973A (zh) * | 2019-12-05 | 2020-05-15 | 北京大学 | 一种web应用动态演化监测方法 |
CN113626028B (zh) * | 2020-05-07 | 2024-06-14 | 腾讯科技(深圳)有限公司 | 一种页面元素的映射方法及装置 |
CN113626028A (zh) * | 2020-05-07 | 2021-11-09 | 腾讯科技(深圳)有限公司 | 一种页面元素的映射方法及装置 |
WO2021232748A1 (zh) * | 2020-05-21 | 2021-11-25 | 深圳市商汤科技有限公司 | 数据处理方法、装置、电子设备、存储介质及程序 |
CN111966880A (zh) * | 2020-08-17 | 2020-11-20 | 江苏百达智慧网络科技有限公司 | 可视化网站内容采集方法和*** |
CN112417351B (zh) * | 2020-10-21 | 2022-08-19 | 上海哔哩哔哩科技有限公司 | 用户视觉轨迹的确定方法、装置、计算机设备及存储介质 |
CN112417351A (zh) * | 2020-10-21 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 用户视觉轨迹的确定方法、装置、计算机设备及存储介质 |
CN112799955A (zh) * | 2021-02-08 | 2021-05-14 | 腾讯科技(深圳)有限公司 | 模型变更的检测方法、装置和存储介质及电子设备 |
CN112799955B (zh) * | 2021-02-08 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 模型变更的检测方法、装置和存储介质及电子设备 |
CN113177168B (zh) * | 2021-04-29 | 2023-12-01 | 上海云扩信息科技有限公司 | 一种基于Web元素属性特征的定位方法 |
CN113177168A (zh) * | 2021-04-29 | 2021-07-27 | 上海云扩信息科技有限公司 | 一种基于Web元素属性特征的定位方法 |
CN115658993A (zh) * | 2022-09-27 | 2023-01-31 | 观澜网络(杭州)有限公司 | 一种网页的核心内容的智能化抽取方法及*** |
CN116112434A (zh) * | 2023-04-12 | 2023-05-12 | 深圳市网联天下科技有限公司 | 一种路由器数据智能缓存方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN111079043B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111079043B (zh) | 一种关键内容定位方法 | |
US9489401B1 (en) | Methods and systems for object recognition | |
CN109726274B (zh) | 问题生成方法、装置及存储介质 | |
US7730104B2 (en) | Extraction of information from structured documents | |
CN109325201A (zh) | 实体关系数据的生成方法、装置、设备及存储介质 | |
US20090125529A1 (en) | Extracting information based on document structure and characteristics of attributes | |
US20100169311A1 (en) | Approaches for the unsupervised creation of structural templates for electronic documents | |
US20210303641A1 (en) | Artificial intelligence for product data extraction | |
JP2010501096A (ja) | ラッパー生成およびテンプレート検出の協同最適化 | |
US20100107055A1 (en) | Extraction of datapoints from markup language documents | |
JP5370159B2 (ja) | 情報抽出装置及び情報抽出システム | |
US11487844B2 (en) | System and method for automatic detection of webpage zones of interest | |
US20090019015A1 (en) | Mathematical expression structured language object search system and search method | |
US8577887B2 (en) | Content grouping systems and methods | |
KR101523450B1 (ko) | 관련어 등록 장치, 관련어 등록 방법, 기록 매체 및, 관련어 등록 시스템 | |
CN109033282B (zh) | 一种基于抽取模板的网页正文抽取方法及装置 | |
CN104268148A (zh) | 一种基于时间串的论坛页面信息自动抽取方法及*** | |
US11928140B2 (en) | Methods and systems for modifying a search result | |
CN109165373B (zh) | 一种数据处理方法及装置 | |
CN115438162A (zh) | 基于知识图谱的疾病问答方法、***、设备及存储介质 | |
CN108280102B (zh) | 上网行为记录方法、装置及用户终端 | |
CN111158973B (zh) | 一种web应用动态演化监测方法 | |
KR102185733B1 (ko) | 프로필 자동생성서버 및 방법 | |
CN117420998A (zh) | 一种客户端ui交互组件生成方法、装置、终端及介质 | |
CN111061975B (zh) | 一种页面中无关内容的处理方法、装置 |
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 |