页面标记法网站分析及数据捕获原理
发布时间:2022-01-20 14:43:19 所属栏目:经验 来源:互联网
导读:网站分析如何获得数据,其实有很多种方法。例如利用服务器日志数据,或者是在客户端装一些监视软件。页面标记法网站分析获取数据的方法跟前二者都不一样,但一经出生,就艳惊四座,迅速成为主流方法。我的博客(http://www.chinawebanalytics.cn)实际上几乎所
网站分析如何获得数据,其实有很多种方法。例如利用服务器日志数据,或者是在客户端装一些监视软件。页面标记法网站分析获取数据的方法跟前二者都不一样,但一经出生,就艳惊四座,迅速成为主流方法。我的博客(http://www.chinawebanalytics.cn)实际上几乎所有的话题都是基于页面标记法的。今天的文章,带朋友们一起再次了解什么是页面标记法的网站分析,以及我们日常所读的Omniture Site Catalyst或是Google Analytics网站分析报告中的数据,都是怎么被捕获的。 因为在出差,所以能够写博客的时间减少了。这篇文章是我正在猛力撰写的关于网站分析基础知识的书中摘取的一段。希望这本书明年能够跟大家见面。 【正文】 谈到网站分析的数据捕获,大家应该先有一个预备知识,那就是页面标记法网站分析和日志法网站分析的根本原理是完全不同的。关于日志法网站分析的原理,请大家看这个帖子:服务器日志法网站分析的原理及优缺点。此前有朋友在微博上留言,认为AWStats,Omniture,WebTrends都是日志分析工具,只不过Omniture利用了ASP方式,它们没有不同。这个观点是完全的误解。实际上,这三个工具都各不相同。AWStats是日志分析工具,免费。WebTrends最初也是纯日志分析工具,但后来增加了Page Tagging(页面标记)的功能。而Omniture SiteCatalyst则一出生则是以Page Tagging为思路的工具,而且至今Omniture并无面向日志分析的工具。 因此,今天话题我们只谈页面标记法(Page Tagging)的网站分析获取数据的原理。我们从一个游戏说起。 什么是页面标记法 starcraft4 大家都玩儿过暴雪公司的游戏StarCraft(星际争霸一代)吗?我可是这个游戏的狂热爱好者。虫族的女王有一个特殊的能力,把一个寄生虫(parasite)喷在敌人的某个行动单位的身上,这样这个行动单位走到哪里,他身边的情况都能被虫族看的一清二楚,成为一个非常忠诚的间谍。 或者,大家都去过银行,银行里放在四处的摄像头,把我们的一举一动其实都拍摄了下来,然后传递到储存装置中保存起来。 所以,不恰当的比喻,所谓的页面标记,就像是“喷给”页面的寄生虫,或者是在页面上安装的摄像头,把访问者在页面上的一举一动都记录下来,然后传递给相关的需要了解这个网站的组织或者个人。 下图表示了这个过程: image 页面标记如同图中红色的一小块,实际上是一段可以被浏览器执行的JavaScript程序语句,放在页面的HTML源文件中。这样,当页面被下载到客户端的浏览器的时候,这段页面标记JavaScript程序就会被执行,如同星际争霸中的寄生虫上身,或是摄像头被打开。 spy 页面标记的JavaScript代码被执行之后,就会如实的把访问者在页面上的互动访问行为不间断的发送给这个页面标记所对应的网站分析工具的服务器,这与摄像头把拍摄到的图像传送给图像存储服务器是完全一样的。网站分析工具服务器收到数据后,会进一步处理这些数据,并且把数据翻译成人们能够阅读和分析的图形、表格以及数据文件,然后呈现在一个漂亮的用户界面上。我们常用的Google Analytics就是这样一种数据收集方法。 可以看到,页面标记方法跟日志方法具有本质上的不同。 日志方法是把日志文件中的数据取出来加以分析;而页面标记则是需要人为的在页面中增加一个小的“间谍单位”,也就是说,需要依赖于一个第三方才能获取数据。 因为这个额外增加的小小“间谍单位”,页面标记方法需要修改页面的HTML源文件,而日志方法不需要。 日志方法是被动地等着你来处理数据,你不处理,数据就是一条条忠实而死板的记录;而页面标记法则是主动地发送数据,而且会自动把数据预处理好,等着你来分析。 讲到这儿要说点儿历史了。互联网的早期,网站的规模较小,结构也简单,日志方法独霸天下,但是互联网的发展太快了,网站的软硬件体系和逻辑架构很快变得越来越复杂,用日志方法需要克服的困难越来越多,实施起来的难度也成倍增加,人们需要找到一种更简单的实现方法。随着JavaScript的普及,SaaS(Software as a Service,软件即服务)的出现,页面标记方法应运而生,这个方法实施起来简单,而且再也不需要去跟海量的日志文件记录打交道,数据管理和处理的效率极大提升,很快成为众多站长的首选。正是因为存在诸如简单易行、数据可读性高、管理难度低等诸多优势,页面标记方法成为网站分析这门科学主流的数据获取方法,我的博客(CWA, http://www.chinawebanalytics.cn)也完全聚焦于这种方法,而不会详细讨论日志方法。 兴趣阅读:监测代码和监测标签的区别 在进行网站分析的具体实践活动中,我们常常把两种不同的监测标记方法——监测代码(Tracking Code)和监测标签(Tracking Tag)混用。但实际上它们是不同的事物,我们如果能够把它们严格区分开,将有助于我们在沟通中进行更准确地沟通。 代码(Code)指能够执行的程序中的语句,因此监测代码是指为监测目的而编写的一段可执行的程序语句。最典型的监测代码就是我们在页面中添加的Google Analytics的JavaScript监测代码。 标签(Tag)指为辨识某个监测对象而添加的标识,这个标识不是程序语句,不能够被执行,但可以被程序识别用于判断监测对象的具体属性。例如这样一个URL:http://www.chinawebanalytics.cn/?utm_campaign=newbook&utm_source=tsinghua&utm_medium=press,“?utm_campaign=newbook&utm_source=tsinghua&utm_medium=press”就是一个标签。标签同样也可以是一段完整的URL。 简单讲,能执行的程序是监测代码,不能执行的是监测标签。 页面标记方法是如何工作的 我们已经了解了页面标记方法的基本原理,现在我们要细致学习页面标记是如何能够实现数据的收集、传递并最终呈现在我们面前的。了解这个过程,对于我们进行网站分析的具体监测实施很有帮助。 image 第1步,页面监测代码被浏览器载入并执行 页面标记方法能够正常工作的前提是要在网站中需要监测的每一个页面中都加入一段JavaScript的监测代码。当用户打开这个页面时,服务器(或者Cache)会响应用户的请求,然后把页面,连同监测代码一起传递给用户的浏览器。当用户的浏览器接收到监测代码,就会开始执行代码。 第2步,执行完整的监测代码 页面上的监测代码被执行后,并不能实现全部的监测功能,而是转而向它所对应的网站分析工具的服务器请求完整的监测代码。完整的监测代码语句量较大,因此被集合成一个.js文件存放在网页的外部。外部代码一旦收到页面监测代码的请求,也会传递给浏览器,并被浏览器执行。这样,完整的监测功能就能得以实现。 以我自己的这个博客(CWA, 网站分析在中国, http://www.chinawebanalytics.cn)的GA监测为实例,在完整的监测代码执行过程中,会有几件事情发生: 1. 探测客户端的各种属性,包括浏览器版本,操作系统版本,屏幕分辨率等等,并且记录下来页面访问具体发生的时间,以及访问的来源(Traffic Source)等等。 2. 为这个用户的这个浏览器建立一个cookie。什么是cookie?请看这个帖子:捍卫Cookie——没有Cookie,我们什么都没有了,以及这个帖子:JavaScript和Cookie对GA的影响有多大?。如果不想看这两篇文章,没关系,简单说cookie的作用是把用户这一次访问这个网站的相关关键情况记录下来,当下次这个用户再浏览这个网站的时候,cookie中的记录就会作为新的浏览记录的参考,从而能够让网站分析工具判断这次访问是否是重复访问,访问者是不是新的访问者,以及很多其他的重要数据。cookie在页面标记监测方法中是必须的,也就是说,如果浏览器禁用了cookie,页面标记方法就不能发生作用。想知道Google Analytics的cookie设置,请看这个文章:网站分析度量、意义以及不为人所知的(2)。 3. 如果之前已经为这个访问者的这个浏览器建立了cookie,那么监测代码会把旧的cookie数据中需要更新的部分重写,这样保证每次cookie都记录的是相应的访问行为的数据。 第3步,传送数据给网站分析工具的服务器 当监测代码收集了全部的信息,这个时候它会把相关的数据的传回给网站分析工具的服务器。传送的方式并不是直接把数据发去(即不是用post方法,如果你不了解HTTP协议中的post和get方法,这个括号中的内容可以略过不看),而是通过向网站分析工具服务器请求一个1×1像素的透明GIF图像来完成的(即仍然是用get方法,不懂同样请略过)。看起来有有点儿奇怪对吗?其实在发出这个1×1像素请求的时候,所有收集到的数据都作为这个请求的相关参数被一起发送给了分析工具的服务器,这样分析工具就能够获得并存储下来相关的数据。 第4步,网站分析工具服务器记录数据 网站分析工具服务器收到了数据之后,会把这些数据存放在一个大的数据文件中,这个数据文件的记录方式和我们前面讲到的日志文件(Log File)非常相似,因此,这里我们也就称它为Log File,不过区别在于,这里来的Log File装着的不是网站分析工具服务器自己的运行数据,而是被监测的网站的数据。 这个Log File文件里面的每一个数据行(一条数据条目)都包含了某一个页面浏览(PageView)的很多信息,包括但不限于如下内容(以Google Analytics的Log File记录文件为例): l 页面访问发生的日期和时间; l 访问的页面的标题; l 访问者的来源(是从某个网站链接过来的,还是通过搜索引擎,还是通过直接访问等等); l 这个访问者访问这个网站的次数; l 访问者IP地址的地理位置; l 访问者客户端的属性,例如操作系统、浏览器、屏幕分辨率等 这些记录一旦被计入到分析工具服务器的日志中,一次数据搜集的工作就结束了。下面这个例子是Google Analytics服务器中记录的一行数据(请注意并非真实的数据): 以下为引用的内容: 123.121.215.51 www.chinawebanalytics.cn – [31/Jan/2010:20:45:26 -0600] "GET /__utm.gif?utmwv=1&utmn=699988832&utmcs=utf-8&utmsr=1680×1050&utmsc=32-bit&utmul=enus& utmje=1&utmfl=8.0&utmcn=1&utmdt=%E7%BD%91%E7%AB%99%E5%88%86%E6%9E%90%E5%9C %A8%E4%B8%AD%E5%9B%BD%E2%80%94%E2%80%94%E4%BB%8E%E5%9F%BA%E7%A1%80 %E5%88%B0%E5%89%8D%E6%B2%BF&utmhid=2006742654&utmr=- &utmp=/ HTTP/1.1" 200 35 "http://www.chinawebanalytics.cn/" "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" "__utma=453698521.699988832.235456888.235456888.235456888.1; __utmb=453698521; __utmc=453698521; __utmz=453698521.235456888.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)" 上面的数据似乎杂乱无章,实际上还是能看出来一些端倪的。例如,能够看到访问者的IP地址是123.121.215.51,访问的域是我的博客www.chinawebanalytics.cn,访问发起的时间是2010年1月31日的晚上8点45分26秒。另外,如果你耐着性子往后看,你还能看到访问者所使用的操作系统和浏览器的信息。 关于utma,utmb,utmc和utmz都代表什么,大家看这个文章就明白了:网站分析度量、意义以及不为人所知的(2)。 第5步,网站分析工具处理数据 数据一旦被记录到网站分析工具服务器的Log File中,流水线就要继续往下走了。下一个环节是处理这些Log File的中的记录行,每一个记录行都包含了具体的数据元素,被称为字段(field),例如访问者IP、访问时间、浏览器及其版本等;这些数据元素会被分别打散,然后存入相应的字段中,成为我们最终查看数据的“半成品”。 接着,数据半成品会进一步被网站分析工具中人为设定的标准筛选,筛选不过的数据字段会被排除掉,剩下的数据会被进一步安排在为生成报告而准备的项目中。所有的这些数据被存放在网站分析工具的专门数据库中,随时等待被提取使用。 第6步,生成报告 当数据都被处理完,整个过程也接近尾声。如果用户使用网站分析工具请求某个特定报告,数据字段就会按照预定义(或是用户自定义)的格式组织被进一步计算、组织、然后被安排在为生成报告而准备的项目中。这个过程我们看不到,但是却蕴含着一个网站分析工具算法的精妙,并且,算法的定义也影响了一些网站分析基本度量的定义,从而直接影响基本度量的实际值的输出。这也是造成不同网站分析工具统计同一网站却带来不同值的一个重要原因。 随后,准备好的数据项目被进一步前推,推送到网站工具的UI(User Interface,用户界面)的服务器中生成具体的图、表和数字,然后被进一步输出到用户的浏览器或客户端上,成为我们能够轻易读懂的报告。 整个过程其实不算复杂,但是网站分析工具会面对大量的数据处理,尤其是当一个网站的流量特别大的时候,网站分析工具会承受很大的负荷。这也是为什么很多网页标记型的网站分析工具会按照被监测网站的流量大小计取费用的原因。 (编辑:许昌站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |