发明内容
为此,本发明提供一种同类元素识别方法、装置和计算设备,以力图解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供一种同类元素识别方法,适于在计算设备中执行,该方法包括:遍历包含目标元素的应用页面的元素树,获取各元素的属性特征及其到根节点的层级值;选取层级值大于等于目标元素的层级值、且与目标元素具有相同属性特征的元素作为候选同类元素;分别计算目标元素的第一父元素集、以及每个候选同类元素的第二父元素集,第一父元素集和第二父元素集均包括一个或者多个父元素,其中父元素不是根节点且包含至少两个子元素;分别计算各第二父元素集与第一父元素集的交集元素,并获取各交集元素的层级值;以及选取层级值最大的交集元素作为共有父元素,并从候选同类元素中选取父元素包括该共有父元素的元素作为该目标元素的同类元素。
可选地,在根据本发明的方法中,属性特征包括元素的组件类型、组件是否有值和组件高度中的至少一种。
可选地,在根据本发明的方法中,元素包括应用的原生组件或HTML元素,元素树为视图层控件树或HTML节点树。
可选地,在根据本发明的方法中,元素的层级值适于根据其XPATH路径确定,且XPATH路径适于通过正则统一处理为层叠样式表表示。
根据本发明的另一个方面,提供一种应用数据获取方法,适于在计算设备中执行,该方法包括:将目标元素的埋点配置信息发送给客户端,以对该目标元素进行埋点操作,该埋点配置信息包括埋点触发事件和所需埋点数据;响应于用户对目标元素的埋点触发事件,获取目标元素和该目标元素的同类元素的埋点数据;其中,目标元素的同类元素适于根据如上所述的同类元素识别方法进行确定。
根据本发明的又一个方面,提供一种同类元素识别装置,适于驻留在计算设备中,该装置包括:属性获取模块,适于遍历包含目标元素的应用页面的元素树,获取各元素的属性特征及其到根节点的层级值;候选元素选取模块,适于选取层级值大于等于目标元素的层级值、且与目标元素具有相同属性特征的元素作为候选同类元素;父元素集计算模块,适于分别计算目标元素的第一父元素集、以及每个候选同类元素的第二父元素集,第一父元素集和第二父元素集均包括一个或者多个父元素,其中父元素不是根节点且包含至少两个子元素;交集元素计算模块,适于分别计算各第二父元素集与第一父元素集的交集元素,并获取各交集元素的层级值;以及同类元素确定模块,适于选取层级值最大的交集元素作为共有父元素,并从候选同类元素中选取父元素包括该共有父元素的元素作为该目标元素的同类元素。
可选地,在根据本发明的装置中,属性特征包括元素的组件类型、组件是否有值和组件高度中的至少一种。
可选地,在根据本发明的装置中,元素包括应用的原生组件或HTML元素,元素树为视图层控件树或HTML节点树。
可选地,在根据本发明的装置中,元素的层级值适于根据其XPATH路径确定,且所述XPATH路径适于通过正则统一处理为层叠样式表表示。
根据本发明的又一个方面,提供一种应用数据获取装置,适于驻留在计算设备中,该装置包括:埋点配置模块,适于将目标元素的埋点配置信息发送给客户端,以对该目标元素进行埋点操作,该埋点配置信息包括埋点触发事件和所需埋点数据;以及数据获取模块,适于响应于用户对目标元素的埋点触发事件,获取目标元素和该目标元素的同类元素的埋点数据;其中,该目标元素的同类元素适于根据如上所述的同类元素识别方法进行确定。
根据本发明的另一个方面,提供一种计算设备,包括:至少一个处理器;以及包括计算机程序指令的至少一个存储器;所述至少一个存储器和所述计算机程序指令被配置为与所述至少一个处理器一起使得所述计算设备执行如上所述的同类元素识别方法。
根据本发明的另一个方面,提供一种存储一个或多个程序的可读存储介质,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行如上所述的同类元素识别方法。
根据本发明的技术方案,根据层级深度和属性特征选取出候选同类元素,并通过对比目标元素和各候选同类元素的父元素集来确定共有父元素。这样,父元素集中包含该共有父元素的候选同类元素即为该目标元素的同类元素。该方法解决了跨平台的同类元素计算,同时支持全控件类型,具有广泛的适用性。同类元素的确定可极大地简化可视化埋点的工作,对于目标元素和其同类元素所组成的同类元素集合,只需要埋点该集合中的一个元素,就可采集和分析该集合中所有元素的埋点数据,从而实现同类元素的批量快速埋点和数据获取,节省计算资源,减少人力物力成本投入。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1是根据本发明一个实施例的计算设备100的框图。在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上利用程序数据124进行操作。程序数据124包括指令,在根据本发明的计算设备100中,程序数据124包含用于执行同类元素识别方法200和/或应用数据获取方法500的指令。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
计算设备100可以实现为服务器,例如文件服务器、数据库服务器、应用程序服务器和WEB服务器等,也可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。计算设备100还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。在一些实施例中,计算设备100被配置为执行同类元素识别方法200和/或应用数据获取方法500。应当理解,所谓同类元素就是具有相似特征的一组元素集合,例如新闻列表中每一行的标题,而目标元素的同类元素就是与该目标元素具有相似特征的一组元素集合。
图2示出了根据本发明一个实施例的同类元素识别方法200的流程图,适于在计算设备中执行,如在计算设备100中执行。如图2所示,该方法始于步骤S210。
在步骤S210中,遍历包含目标元素的应用页面的元素树,获取各元素的属性特征及其到根节点的层级值。
其中,属性特征可以包括元素的组件类型、组件是否有值和组件高度中的一种或多种。此外,还可以获取各元素的组件标识等信息。元素通常可包括应用的原生组件或HTML元素,相应的元素树可以为视图层控件树或HTML节点树。元素到根节点的层级值可以根据其XPATH路径确定,且XPATH路径可以通过正则统一处理为层叠样式表CSS表示。例如HTML中的一个列表标题元素DT,其XPATH是BODY[0]/DIV[1]/DIV[0]/DIV[6]/UL[1]/LI[1]/DL[0]/DT[0],则根据层级元素个数确定其到根节点的层级值为8。该XPATH可以正则统一处理为相应的CSS选择符号。
随后,在步骤S220中,选取层级值大于等于目标元素层级值、且与目标元素具有相同属性特征的元素作为候选同类元素。
通常,可通过Selector API进行节点选取,在上述例子中,也就是选取层级值大于等于8且与目标元素具有相同属性特征的元素作为候选同类元素。相同属性特征包括但不限于相同的组件类型、相同的是否有值结果和相同的组件高度。其中,对于组件高度项,考虑到不同终端的DPI差异,高度值可以有预定容错值(如5px),也就是基于目标元素的高度可上下浮动该预定容错值。这样能够有效避免对列表类组件的高度进行过度筛查而漏掉部分真实的同类元素。
随后,在步骤S230中,分别计算目标元素的第一父元素集、以及每个候选同类元素的第二父元素集,第一父元素集和第二父元素集均包括一个或者多个父元素,其中,父元素不是根节点且包含至少两个子元素。也就是,某元素的父元素不能是根节点、且包含至少两个子元素。这里,子父元素关系指在特定树状结构中的层级关系,沿着某元素所在分支往上查找可得到该元素的父元素。而叶子结点就是一棵树中没有子结点的结点,简称“叶子”,也即终端节点。因此,父元素也不可能是叶子节点。
图3示出了根据本发明一个实施例的元素树,其中H为根节点,节点C、F、G、N均为叶子结点,A有一个子元素,L有三个子元素,M有两个子元素。若T1为目标元素,该目标元素的候选同类元素有T2、T3、T4等,则根据“不是根节点且包含至少两个子元素”的原则来查找T1的父元素,得到父元素S和L,则T1的第一父元素集为(L,S)。同理,查找T2、T3、T4的父元素集,可知T2的第二父元素集为(L,S),T3的第二父元素集为(M,S),T4的第二父元素集为(M,S)。
随后,在步骤S240中,分别计算各第二父元素集与第一父元素集的交集元素,并获取各交集元素的层级值。
一般地,根节点的层级值最小,离根节点越远的元素层级值越大。以图3为例,H为根节点,其层级值最小,从上往下各元素的层级值逐渐增加。
接着,在步骤S250中,选取层级值最大的交集元素作为共有父元素,并从候选同类元素中选取父元素包括该共有父元素的元素作为该目标元素的同类元素。
在图3中,T2的第二父元素集与T1的第一父元素集的交集元素为L和S,T3和T4的第二父元素集与T1的第一父元素集的交集元素均为S。这样最后确定的交集元素共有L和S这两种。根据就近原则,选取离目标元素最近的交集元素为共有父元素,也就是层级值最大(离根节点最远)的交集元素,确定L为共有父元素。因为T3和T4的第二父元素集中不包含该共有父元素L,因此将T3和T4从候选同类元素中排除,而只保留父元素包含该L元素的T2作为元素T1的同类元素。
图4A和4B分别示出了某目标元素及该目标元素的同类元素的示意图,图4A中配方奶粉目录下的第一个奶粉图片组件(方框所圈图片)为目标元素,
图4B中为根据本发明的方法确定的该元素的同类元素,可以看出其成功圈定了配方奶粉目录下的三个同类奶粉图片组件,而成功排除了极具相似性的辅食目录下的两个图片组件,计算结果准确精密无误差,可有效提高数据埋点的效率和准确率。
图5示出了根据本发明一个实施例的应用数据获取方法500的流程图,适于在计算设备中执行,如在计算设备100中执行。如图5所示,该方法始于步骤S510。
在步骤S510中,将目标元素的埋点配置信息发送给客户端,以对该目标元素进行埋点操作,该埋点配置信息包括埋点触发事件和所需埋点数据。
其中,埋点触发事件如点击事件等,所需埋点数据也就是当该埋点触发事件发生时,采集该元素的哪些数据,如访问数、访客数、停留时长、页面浏览数、跳出率、页面标识、组件标识、设备信息、时间参数等,以用于后续的页面统计和转化率统计等操作。此外,埋点配置信息还可以包括目标元素及其同类元素的组件标识,以根据目标元素的组件标识进行埋点操作,并当触发埋点触发事件时,根据目标元素及其同类元素的组件标识获取对应元素的埋点数据。
随后,在步骤S520中,响应于用户对目标元素的埋点触发事件,获取该目标元素和该目标元素的同类元素的埋点数据,其中,该目标元素的同类元素采用如上所述的同类元素识别方法200进行确定。
也就是,方法500只用对同类元素中的其中一个元素进行埋点,在对该埋点元素进行数据获取时,就可同步所有获取同类元素的埋点数据,节省人力物力,降低计算资源。当然,方法500中也可以不对该目标元素进行埋点,而从其同类元素中任选一个进行埋点,同样可以获得该目标元素及所有同类元素的埋点数据。
图6示出了根据本发明一个实施例的同类元素识别装置600的结构示意图,适于驻留在计算设备100中。如图6所示,该装置包括属性获取模块610、候选元素选取模块620、父元素集计算模块630、交集元素计算模块640和同类元素确定模块650。
属性获取模块610可以遍历包含目标元素的应用页面的元素树,获取各元素的属性特征及其到根节点的层级值。
根据一个实施例,属性特征包括元素的组件类型、组件是否有值和组件高度中的至少一种。元素包括应用的原生组件或HTML元素,元素树为视图层控件树或HTML节点树。此外,元素的层级值适于根据其XPATH路径确定,且XPATH路径可以通过正则统一处理为层叠样式表表示。
候选元素选取模块620可以选取层级值大于等于目标元素的层级值、且与目标元素具有相同属性特征的元素作为候选同类元素。
父元素集计算模块630可以分别计算目标元素的第一父元素集、以及每个候选同类元素的第二父元素集,第一父元素集和第二父元素集均包括一个或者多个父元素,父元素不是根节点且包含至少两个子元素。
交集元素计算模块640可以分别计算各第二父元素集与第一父元素集的交集元素,并获取各交集元素的层级值。
同类元素确定模块650可以选取层级值最大的交集元素作为共有父元素,并从候选同类元素中选取父元素包括该共有父元素的元素作为该目标元素的同类元素。
根据本发明的同类元素识别装置600,其具体细节已在基于其他附图的描述中详细公开,在此不再进行赘述。
图7示出了根据本发明一个实施例的应用数据获取装置700的结构示意图,适于驻留在计算设备100中。如图7所示,该装置包括属性埋点配置模块710和数据获取模块720。
埋点配置模块710,可以将目标元素的埋点配置信息发送给客户端,以对该目标元素进行埋点操作,该埋点配置信息包括埋点触发事件和所需埋点数据。此外,该埋点配置信息还可以包括目标元素及其同类元素的组件标识。
数据获取模块720,可以响应于用户对目标元素的埋点触发事件,获取目标元素和该目标元素的同类元素的埋点数据,其中,目标元素的同类元素可以根据如上所述的同类元素识别方法200进行确定。
根据一个实施例,埋点配置模块710还可以将目标元素及其同类元素中的任一元素A的埋点配置信息发送给客户端,以对该元素A进行埋点操作,。数据获取模块720还可以响应于用户对元素A的埋点触发事件,获取目标元素及其同类元素的埋点数据。
根据本发明的技术方案,提供了一种跨平台的同类元素计算方法,根据元素深度层级、维度特征和就近原则来计算同类元素集合,其同时支持全控件类型应用,不依赖特定控件和场景,适用范围广,给业务埋点等工作带来极大便利。在进行业务埋点时,只需对同类元素中任一元素进行埋点,就能获取所有同类元素的埋点数据,极大地简化了埋点工作量,提高数据计算效率。
A8、如A6所述的装置,其中,所述元素包括应用的原生组件或HTML元素,所述元素树为视图层控件树或HTML节点树。
A9、如A6-A8中任一项所述的装置,元素的层级值适于根据其XPATH路径确定,且所述XPATH路径适于通过正则统一处理为层叠样式表表示。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的同类元素识别方法和应用数据获取方法。
以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。