用于抓取应用页面的数据的方法、装置及终端与流程

文档序号:11199219阅读:344来源:国知局
用于抓取应用页面的数据的方法、装置及终端与流程

本申请涉及计算机软件技术领域,尤其涉及用于抓取应用页面的数据的方法、装置及终端。



背景技术:

随着技术的不断发展,智能终端(如智能手机、平板电脑等)越来越多的应用于人们的生活和工作中,主要应用于智能终端的安卓(android)系统也得到了快速的推广。由于安卓系统的广泛推广,使得在安卓系统中抓取应用页面数据的技术变得越来越重要,例如,大数据的采集、应用于手机应用程序的搜索引擎等等,都需要抓取用户终端应用页面的数据。

在现有技术中,服务器可以模拟智能终端在网络中的通信协议,向智能终端发送通信请求,由智能终端返回包含当前应用页面的相关数据的数据包。服务器接收到数据包后,按照对应的通信协议对数据包进行解析,从而获取应用页面的相关数据。但由于应用程序的多样性,可能不同的应用程序支持不同的通信协议,因此,服务器要按照不同的通信协议对不同的数据包进行解析,需要较大的开发量,从而浪费了资源,降低了抓取应用页面的数据的效率。



技术实现要素:

为了解决上述技术问题,本申请提供了一种用于抓取应用页面的数据的方法、装置及终端。

根据本申请实施例的第一方面,提供一种用于抓取应用页面的数据的方 法,所述方法应用于具有预定特征的操作系统,所述预定特征包括对操作系统中预设组件进行修改而定义的对应于预定属性的属性输出函数,所述方法包括:

接收前台运行的应用程序向操作系统在预定事件发生时,发送的数据抓取请求;

响应于所述数据抓取请求,基于所述属性输出函数导出当前应用页面的预定数据,所述应用页面的预定数据为应用页面的预定属性对应的数据;

将导出的所述应用页面的预定数据进行存储,并上传给服务器。

根据本申请实施例的第二方面,提供一种用于抓取应用页面的数据的装置,所述装置应用于具有预定特征的操作系统,所述预定特征包括对操作系统中预设组件进行修改而定义的对应于预定属性的属性输出函数,所述装置包括:

接收单元,接收前台运行的应用程序在预定事件发生时,发送的数据抓取请求;

导出单元,用于响应于所述数据抓取请求,基于所述属性输出函数导出当前应用页面的预定数据,所述应用页面的预定数据为应用页面的预定属性对应的数据;

存储单元,用于将导出的所述应用页面的预定数据进行存储;

上传单元,用于将导出的所述应用页面的预定数据上传给服务器。

根据本申请实施例的第三方面,提供一种终端,所述终端应用具有预定特征的操作系统,所述预定特征包括对操作系统中预设组件进行修改而定义的对应于预定属性的属性输出函数,所述终端包括:

处理器;用于存储所述处理器可执行指令的存储器;

其中,所述处理器被配置为:

接收前台运行的应用程序向操作系统在预定事件发生时,发送的数据抓取请求;

响应于所述数据抓取请求,基于所述属性输出函数导出当前应用页面的 预定数据,所述应用页面的预定数据为应用页面的预定属性对应的数据;

将导出的所述应用页面的预定数据进行存储,并上传给服务器。

应用上述实施例,接收前台运行的应用程序在预定事件发生时,发送的数据抓取请求,响应于该数据抓取请求,基于所述属性输出函数导出当前应用页面的预定属性对应的数据,将导出的数据进行存储,并上传给服务器。因此,该实施例由终端直接将应用页面的预定数据上传给服务器,无需服务器模拟手机通信协议向手机发送请求,也无需服务器再按照不同的通信协议对接收到的不同的数据包进行解析,从而节省了资源,提高了抓取应用页面的数据的效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1为应用本申请实施例的示例性系统架构示意图;

图2为本申请用于抓取应用页面的数据的方法的一个实施例流程图;

图3为本申请用于抓取应用页面的数据的装置所在设备的一种硬件结构图;

图4为本申请用于抓取应用页面的数据的装置的一个实施例框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

参见图1,为应用本申请实施例的示例性系统架构示意图:

如图1所示,系统架构100可以包括终端设备101、102、网络103和服务器104。网络103用于在终端设备101、102和服务器104之间提供通信链路的介质。网络103可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

终端设备101、102可以通过网络103与服务器104交互,以接收或发送请求或信息等。终端设备101、102可以是各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机以及台式电脑等等。服务器104可以是提供各种服务的服务器。服务器可以对接收到的数据进行存储、分析等处理。可以理解,一个服务器可以提供一种或多种服务,同一种服务也可以由多个服务器来提供。

应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

基于图1示出的系统架构,本申请实施例中,终端设备101或终端设备102在获取了前台运行的应用程序的页面数据后,可以通过网络103向服务器104上传获取的上述应用程序的页面数据,服务器104接收到上述应用程 序的页面数据后,可以根据具体需要,筛选出部分数据(如,筛选出文字部分的数据,或者筛选出图像部分的数据等)。从而,进一步应用筛选出的数据进行一些统计或计算等。下面将结合具体的实施例对本申请进行详细描述。

参见图2,为本申请用于抓取应用页面的数据的方法的一个实施例流程图,该实施例可以应用于终端,包括如下步骤:

步骤201,接收前台运行的应用程序在预定事件发生时,发送的数据抓取请求。

步骤202,响应于上述数据抓取请求,基于所述属性输出函数导出当前应用页面的预定数据,该应用页面的预定数据为应用页面的预定属性对应的数据。

步骤203,将导出的该应用页面的预定数据进行存储,并上传给服务器。

在本实施例中,该方法可以应用于操作系统为安卓系统的终端中,该操作系统具有预定特征,预定特征包括对操作系统中预设组件进行修改而定义的对应于预定属性的属性输出函数。具体来说,在执行该方法之前,需要先对安卓系统的系统框架进行修改,然后搭建安卓系统源码编译环境,将编译修改好的安卓系统重装到执行该方法的终端中,以使该终端能够执行上述方法。对安卓系统进行的修改如下:

(1)在安卓系统的视图组件或者视图的子类组件里设定预定注解。

一般来说,安卓系统的界面包含多种属性的数据,例如,属性为文字的数据,属性为图像的数据,属性为颜色的数据等等。可以首先自定义一个注解(预定注解),并将这个注解添加到视图组件(如view.java)或者视图的子类组件(如textview.java)里预定属性(需要获取的数据对应的属性)代码段中,以标定该属性。其中,注解也叫元数据(用来描述数据的数据),是一种代码级别的说明,与类、接口、枚举是在同一个层次,可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。注解是以‘@注解名’在代码中存在的,它不会直接影响到程序的语义,只是作为标识存在,我们可以通过反射机制编程实现对注解的访问。

例如,参见如下代码段:

@viewdebug.exportedproperty(category=”layout”)

protectedintmleft;

该代码段为视图组件中描述屏幕坐标系中左坐标属性的原始代码段,如果需要获取屏幕坐标系中左坐标属性相关的数据,则可以上述代码段中添加一个自定义注解。假设该自定义注解为@viewdebug.testproperty,则经过修改后的代码段为:

@viewdebug.testproperty

@viewdebug.exportedproperty(category=”layout”)

protectedintmleft;

(2)修改安卓系统的视图调试组件的代码。

一方面,在视图调试组件(如,viewdebug.java)中添加上述注解(如,@viewdebug.testproperty)的定义,该定义包含属性输出命令。以便在视图服务组件调用导出命令时,能够查找出预定注解的定义。

例如,假设上述预定注解为@viewdebug.testproperty,则可以在视图调试组件的代码中添加如下代码段:

@target({elementtype.field,elementtype.method})

@retention(retentionpolicy.runtime)

public@interfacetestproperty{

}

该代码段为注解@viewdebug.testproperty的定义及导出命令。

另一方面,在视图调试组件(如,viewdebug.java)中定义属性输出函数。以便能够在查找出预定注解的定义后,按照定义中属性输出命令调用该属性输出函数,从而实现预定属性对应的数据的输出。

例如,属性输出函数可以定义为:

privatestaticfield[]gettestpropertyfields(class<?>klass){

………………

………………

………………

returnfields;

}

当视图服务组件调用导出命令时,查找出预定注解的定义,可以调用上述属性输出函数,执行该属性输出函数,以实现预定属性对应的数据的输出。

(3)修改调用函数流程,构建导出命令,使得视图服务组件在调用上述导出命令后,能够调用到视图调试组件里定义的属性输出函数。

在将编译修改好的安卓系统重装到执行该方法的终端中后,该终端就能够执行上述方法。

首先,在步骤201中,接收前台运行的应用程序在预定事件发生时,发送的数据抓取请求。预定事件的发生可以包括以下一项或多项:应用程序的开启;应用页面的切换;以及用户的预定操作。其中,操作系统可以为安卓系统。

在一种实现方式中,预定事件的发生可以是终端中安装的任意一个应用程序的开启,当预定事件发生时,由该开启的应用程序向操作系统发送数据抓取请求。例如,当用户开启了终端中的百度浏览器的应用程序时,则由百度浏览器的应用程序向操作系统(如,安卓系统)发送数据抓取请求。该实现方式适合于自动抓取页面的数据。

在另一种实现方式中,预定事件的发生还可以是用户的预定操作,用户的预定操作可以是用户在操作界面点击预设的数据抓取启动按钮的操作,或者也可以是进行预定的手势操作等。可以理解,用户的预定操作还可以是其它的操作,本申请对预定操作的具体形式方面不限定。当预定事件发生时,由前台运行的应用程序向操作系统发送数据抓取请求。例如,当用户开启了终端中不涉及隐私的应用程序(如新闻客户端),该用户认为此时可以上传应用页面的数据,则可以执行开启数据抓取的操作(如,点击预设按钮),则由前台运行的应用程序向操作系统(如,安卓系统)发送数据抓取请求。该实现方式适合于手动抓取页面的数据。

在又一种实现方式中,预定事件的发生还可以是应用页面的切换,当预定事件发生时,由前台运行的应用程序向操作系统发送数据抓取请求。例如,当前台运行的应用程序的页面切换到新的页面时,由前台运行的应用程序向操作系统发送数据抓取请求。该实现方式可以用于自动抓取页面的数据,也可以用于手动抓取页面的数据。

接着,在步骤202中,响应于数据抓取请求,基于所述属性输出函数导出当前应用页面的预定数据。在本实施例中,该应用页面的预定数据为应用页面的预定属性对应的数据。预定属性为通过上述修改(1)在视图组件或者视图的子类组件里预先用预定注解标定的属性。

具体来说,当操作系统接收到数据抓取请求后,控制视图服务组件调用通过上述修改(3)预先构建的导出命令。响应于该导出命令,查找出通过上述修改(2)预先在视图调试组件中设定的预定注解的定义,该定义包含属性输出命令。调用预定注解的定义指示的属性输出函数,该属性输出函数通过上述修改(2)预先在视图调试组件中设定。调用该属性输出函数,可以获取预定属性对应的数据。

最后,在步骤203中,将导出的该应用页面的预定数据进行存储,并直接上传给服务器。服务器可以对这些数据进行整理和分析,筛选出需要的数据(如,筛选出文字部分的数据,或者筛选出图像部分的数据等)。从而,进一步应用筛选出的数据进行一些统计或计算等。

应用上述实施例,接收前台运行的应用程序在预定事件发生时,发送的数据抓取请求,响应于该数据抓取请求,基于所述属性输出函数导出当前应用页面的预定属性对应的数据,将导出的数据进行存储,并上传给服务器。因此,该实施例由终端直接将应用页面的预定数据上传给服务器,无需服务器模拟手机通信协议向手机发送请求,也无需服务器再按照不同的通信协议对接收到的不同的数据包进行解析,从而节省了资源,提高了抓取应用页面的数据的效率。

应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是, 这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

与本申请用于抓取应用页面的数据的方法的实施例相对应,本申请还提供了用于抓取应用页面的数据的装置及终端的实施例。

本申请用于抓取应用页面的装置的实施例可以应用在设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请用于分页查询的装置所在设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,图3中不再一一示出。

参见图4,为本申请用于抓取应用页面的装置的一个实施例框图。

该装置包括:接收单元401、导出单元402、存储单元403和上传单元404。

其中,接收单元401,用于接收前台运行的应用程序在预定事件发生时,发送的数据抓取请求;

导出单元402,用于响应于所述数据抓取请求,基于所述属性输出函数导出当前应用页面的预定数据,所述应用页面的预定数据为应用页面的预定属性对应的数据;

存储单元403,用于将导出的所述应用页面的预定数据进行存储;

上传单元404,用于将导出的所述应用页面的预定数据上传给服务器。

在一个可选的实现方式中,所述预定属性为视图组件或者视图的子类组件里预先用预定注解标定的属性。

在另一个可选的实现方式中,所述导出单元402可以包括(图4中未示 出):

控制子单元,用于控制视图服务组件调用预先构建的导出命令;

查找子单元,用于响应于所述导出命令,查找出预先在视图调试组件中设定的预定注解的定义;

获取子单元,用于调用所述预定注解的定义指示的属性输出函数,以获取所述预定属性对应的数据,所述属性输出函数是预先在所述视图调试组件里定义的。

在另一个可选的实现方式中,预定事件的发生包括以下一项或多项:

应用程序的开启;

应用页面的切换;以及

用户的预定操作。

在另一个可选的实现方式中,所述操作系统为安卓系统。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

应当理解,上述装置可以预先设置在终端中,也可以通过下载等方式而加载到终端中。上述装置中的相应模块单元可以与终端中的模块单元相互配合以实现用于抓取应用页面的数据的方案。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申 请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1