发明内容
本申请的主要目的在于提供一种用户行为数据采集方法及其***,以解决现有技术存在的通过页面JavaScript AJAX方式发送请求无法可靠记录用户行为数据导致降低用户行为数据采集的准确性的问题。
为解决上述技术问题,根据本申请的一个方面,提供了一种用户行为数据采集方法,其包括:
浏览器控件接收来自页面脚本语言的用户行为数据;所述浏览器控件将所述用户行为数据写入预设的离线队列文件;创建独立进程,并通过所述独立进程将离线队列文件中的用户行为数据发送至服务器。
其中,在所述浏览器控件接收来自页面脚本语言的用户行为数据的步骤之前,所述方法还包括:所述页面脚本语言将用户行为描述为预定结构的用户行为数据;
所述浏览器控件接收来自页面脚本语言的用户行为数据的步骤包括:所述浏览器控件通过调用预先定义的控件接口接收所述预定结构的用户行为数据。
其中,所述预定结构的用户行为数据包括以下信息:页面统一资源定位符、引用来源、行为描述、记录时间。
其中,所述通过所述独立进程将离线队列文件中的用户行为数据发送至服务器的步骤包括:所述独立进程定期检查离线队列文件中是否有需要发送的用户行为数据,若是,则通过调用***接口检查网络状态;若网络状态为空闲,则按照先进先出方式将所述离线队列文件中的用户行为数据发送至所述服务器。
其中,所述方法还包括:判断用户行为数据是否发送成功,若是则将所述离线队列文件中的该数据进行删除。
根据本申请的另一方面,还提供了一种用户行为数据采集***,其包括:
浏览器控件模块,用于接收来自页面脚本语言的用户行为数据,并将所述用户行为数据写入预设的离线队列文件;独立进程模块,用于将离线队列文件中的用户行为数据发送至服务器。
其中,所述浏览器控件模块通过调用预先定义的控件接口接收预定结构的用户行为数据,其中,所述页面脚本语言将用户行为描述为预定结构的用户行为数据。
其中,所述预定结构的用户行为数据包括以下信息:页面统一资源定位符、引用来源、行为描述、记录时间。
其中,所述独立进程模块包括:数据检查模块,用于定期检查离线队列文件中是否有待发送的用户行为数据;网络状态检查模块,用于若离线队列文件中有待发送的用户行为数据,则通过调用***接口检查网络状态;数据发送模块,用于若网络状态为空闲,则按照先进先出方式将离线队列文件中的用户行为数据发送至所述服务器。
其中,所述独立进程模块还包括:判断模块,用于判断用户行为数据是否发送成功;删除模块,用于若用户行为数据发送成功,则将所述离线队列文件中的该数据进行删除。
根据本申请的技术方案,通过JavaScript与浏览器控件通信,建立离线的请求发送队列,由独立进程发送队列中的用户行为数据,即通过JavaScript-浏览器控件-独立进程三者协同工作将页面上的用户行为数据可靠发送至服务器,提高了用户行为数据的采集准确率。
具体实施方式
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
内存可能包括模块1,模块2,模块N....
本申请提供了一种可靠的用户行为数据采集方法,通过将请求发送途径从现有技术的JavaScript AJAX改为调用控件接口,写入本地离线队列文件,并由独立进程负责发送的方式,解决了请求可能存在发送不成功的问题,提高了用户行为数据的采集成功率。
为使本申请的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本申请作进一步地详细说明。
根据本申请的实施例,提供了一种用户行为数据采集方法,所述数据采集(Datacollecting)是指将数据从用户使用的客户端发送到服务器的过程。
图1是根据本申请实施例的用户行为数据采集方法的流程图,如图1所示,该方法包括:
步骤S102,浏览器控件接收来自页面脚本语言的用户行为数据。
用户行为(User Behavior)是用户使用产品的操作方式,例如包括但不限于下载文件、网络游戏等可大量使用网络资源的操作。页面脚本语言(JavaScript)将用户行为描述为预定结构的用户行为数据,浏览器控件(Plug-in)通过调用预先定义的控件接口接收预定结构的用户行为数据,在实际应用中,参考图2,用户行为数据通过键-值对(KeyValuePair)形式以字符串的方式传递到浏览器控件。
由于数据采集业务对所传送的数据信息是有一定需求的,为满足该数据传送需求,本申请定义了用户行为数据的组成结构,参考图3,根据本申请的预定结构的用户行为数据包括但不限于以下信息:页面统一资源定位符(URL)、数据的引用来源(引导页面来到当前位置的上一个页面URL)、行为描述信息、记录时间。并且,要求用户行为数据具有以下特点:最终生成的数据量小(较少的数据一次发送成功率更高)、配置集中(无需额外组件修改数据)、易于序列化(简单数据方便文本呈现及发送上HTTP请求时无需复杂编码)。
步骤S104,浏览器控件将用户行为数据写入预设的离线队列文件。
预先设置离线的队列文件,该队列文件中的数据列表按照先进先出(FIFO)方式处理数据。
步骤S106,创建独立进程,并通过独立进程将离线队列文件中的用户行为数据发送至服务器。
参考图4,本申请的浏览器控件和独立进程通过离线队列(例如磁盘文件)进行协作,浏览器控件负责追加用户行为数据到列队尾部,独立进程取出队列头部的数据进行发送,从而完成用户行为数据的准确采集。
独立进程启动后,定期检查队列文件中是否有需要发送的数据,如果有则通过调用***接口检查网络的可用状态,在网络空闲时发送这些数据,发送完成后需要将该数据从队列中删除。下面参考图5详细描述独立进程的队列文件的处理流程,在该实施例中,独立进程检测到队列文件中有需要发送的数据,并且网络处于空闲状态可以发送数据。参考图5,该处理流程包括:
步骤S502,独立进程读取队列文件头部数据;
步骤S504,队列将头部的数据组装为请求数据;
步骤S506,独立进程向服务器发送请求;
步骤S508,数据发送完成,服务器向独立进程返回成功信息,例如通过HTTP请求返回的状态码可以判断发送是否成功;
步骤S510,独立进程删除队列文件头部最上面的数据;
步骤S512,数据删除完成,继续执行步骤S502或等待下次检测时间到达时继续执行步骤S502。
本申请通过与浏览器控件通信,建立离线的请求发送队列,并由独立于浏览器的独立进程负责发送队列中的数据,即通过JavaScript-控件-独立进程三者协同工作将页面上的用户行为数据可靠发送至服务器,从而提高用户行为数据的采集准确率。
根据本申请的实施例,还提供了一种用户行为数据采集***,参考图6,所述***至少包括:浏览器控件模块610和独立进程模块620,下面详细描述上述各模块的结构和功能。
浏览器控件模块610用于接收来自页面脚本语言的用户行为数据,并将所述用户行为数据写入预设的离线队列文件。在本申请实施例中,页面脚本语言将用户行为描述为预定结构的用户行为数据,其中,预定结构的用户行为数据包括但不限于以下信息:页面统一资源定位符、引用来源、行为描述、记录时间。浏览器控件模块610通过调用预先定义的控件接口接收预定结构的用户行为数据。
独立进程模块620用于将离线队列文件中的用户行为数据发送至服务器。
根据本申请的上述实施例,通过JavaScript-浏览器控件-独立进程三者协同工作将页面上的用户行为数据可靠发送至服务器。
参考图7,独立进程模块620进一步包括:数据检查模块710、网络状态检查模块720和数据发送模块730。
其中,数据检查模块710,用于定期检查离线队列文件中是否有待发送的用户行为数据;
网络状态检查模块720与数据检查模块710相耦接,用于若离线队列文件中有待发送的用户行为数据,则通过调用***接口检查网络状态;
数据发送模块730与网络状态检查模块720相耦接,用于若网络状态为空闲,则按照先进先出方式将离线队列文件中的用户行为数据发送至服务器。
继续参考图7,所述独立进程模块620还包括:
判断模块740与数据发送模块730相耦接,用于判断用户行为数据是否发送成功;
删除模块750与判断模块740相耦接,用于若用户行为数据发送成功,则将离线队列文件中的该数据进行删除。
本申请的方法的操作步骤与***的结构特征对应,可以相互参照,不再一一赘述。
综上所述,根据本申请的上述技术方案,通过JavaScript与浏览器控件通信,建立离线的请求发送队列,由独立进程发送队列中的用户行为数据,即通过JavaScript-浏览器控件-独立进程三者协同工作将页面上的用户行为数据可靠发送至服务器,提高了用户行为数据的采集准确率。
以上所述仅为本申请的实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。