在网上搜索“网络日志”,对网络日志的解释是博客(Web Log),指的是用户不定期更新在网络上的文章,属于社交网络的一种。
联系老师邮件上下文,窃以为老师所说的网络日志指的是和网络相关的内容。在互联网上进行搜索,找到了“网站日志”。网站日志中主要是web服务器接受处理请求以及运行时错误等各种原始信息的.log结尾的文件。
因此接下来主要了解的是网站日志方面的内容。
网络日志的格式主要有两类:
第一类是Apache的NCSA格式,其本身又分成普通日志格式CLF(Commom Log Format)和扩展日志模式ECLF(extended common log format);
第二类是IIS的W3C格式。W3C具备了更加丰富的输出信息。
由于Apache的ECLF更加常用,所以网上的博客先举了ECLF的例子。
可以这样读这个日志:
来自http://www.google.cn/search?Q=webdataanalysis的HTTP/1.1协议,在2010年的2月22号的9:51:06访问了我的服务器,然后用get的方式,访问了58.61.164.141的reference_and_source/weblog-format;
则其具体结构为:
1.访问主机(remote host):
这是值得是被访问的主机,也就是用户访问的服务器的主机;如:58.61.164.141
2.时期(data):
访问主机的时间。其中+0800是指的时区,北京时间。
3.请求(request):
客户端向服务器提出的请求。有三种方式GET,POST和HEAD。通过这个部分,我们可以知道具体请求了服务器中的哪些资源。
4.服务协议(protocol)
5.状态码(status):
1XX表示继续消息:表示请求已经接受,需要继续处理,一般情况下是不允许发送的,做实验用的(100,101,102)。2XX表示成功。(200,201,202,203,204等等)。3XX表示重定向。重定向分为客户端的重定向和服务器的重定向。4XX表示错误。5XX表示服务器不支持。
6.字节数:
这里的6326就是指的字节数。
7.来源页面(referrer):
表示浏览者之前访问的页面,从另一个页面跳转到现在的页面。比如我的这个案例就是从Google的一个网站上跳转过来的请求。
8.用户代理(AgentUser ):
1.windows NT 5.1 指的是windosXP系统。通过这个可以知道用户的操作系统。
2.MSIE 6.0 指的是window的浏览器的版本。
3.Mizilla 4.0起源于一个叫Mozilla的基金会,这个基金会和火狐有关系。只是一个AgentUser的版本控制。
在用户代理中可以看到客户端的操作系统,CPU,浏览器,浏览器渲染引擎和浏览器插件。在我的例子中是没有的,但本质上是一个字符串。但日志中的这一处记录的可信度有待商榷,因为可以伪造代理。
下面是一段常见的IIS生产的W3C扩展WEB日志
2011-09-01 16:02:22 GET /Enterprise/detail.asp 70.25.29.53 http:/ /www .example.com/searchout.asp 202 17735 369 4656
这个日志可以解读为:IP是70.25.29.53,来自"http://www.example.com/searchout.asp"的访客,在2011-09-01 16:02:22,访问(GET)了主机的/Enterprise/detail.asp,访问成功,得到17735字节数据。
两个协议其实差不多,除了W3C似乎多了一个获得来访用户的IP的功能。
莫非W3C可以记录来访用户IP,而NCSA不成?这不可能!于是我在网上搜索了两个表。
第一个表是NCSA的格式表,而第二个是W3C的格式表。
对比到这里,我发现,似乎NCSA真的没有客户端IP的记录。这不可能,于是去官网找了一波
找到了这个。说明NCSA还是可以记录远程登录的主机的IP的。NCSA和W3C虽然是由不同的组织提供的不同的协议,但其实很相似。
那么综上,从网络日志里能看到什么呢?被访问的主机,访问日期,资源的请求,用户请求所用的协议,用户获得资源的成功与否,获得多少资源,用户的来源页面,如果幸运的话,可以看到用户用的系统,用的浏览器,用的浏览器插件。
当然除了NCSA格式,还有W3C模式,通过该模式可以比较方便的获得用户的IP。
WEB日志记录了网站访客的详细情况,我们可以通过日志分析工具来分析网民对网站的浏览情况,但在实际应用中,我们更多的是采用一些第三方的网站统计工具来监控访客对网站的访问情况。
我觉得主要可以看到两个点。一个点是机器,一个点是人本身。
(觉得人本身的角度更有意思些。而机器的角度更加务实。两者相辅相成。)
通过用户的浏览记录,可以得到用户的兴趣,爱好,性格,习惯,心理年龄,家庭,背景,生活环境,进而预测这个用户的下一步行为,再进而精准推荐、预测犯罪、匹配伴侣、适配职业……
(那时将是怎样的时代?最好的时代?最坏的时代?)
当然上一句话很浮夸,因为一个人在不同环境下做出的反应是不同的,网络记录只是一个人日常行为的一部分,甚至只是上网行为中的一个部分。网站与网站之间的记录也存在数据壁垒的。人的隐私权因素也要考虑到其中,计算机面对海量的数据处理能力也不足,心理学等相关学科的发展也不足以支撑这种预测……
现阶段,能做的只是通过用户的浏览记录为用户提供个性化服务,比如商品推荐系统,文献推荐系统等,亦或者根据用户的喜好为用户返回适合用户的信息。
例如知道用户的IP,进而知道用户的地址,进而推断用户的生活环境,进而进行协同过滤,毕竟一个地区的用户喜好总有相似点。这是商品推荐的方面。
例如知道用户的最长时间和最高频率浏览的网页以及浏览的位置,可以改变网页结构,去除坠余,删去的部分可以替换为广告。这是返回用户定制的网页。
1.我们可以从网站日志上看到用户的浏览时间,浏览页面,浏览方式,可以根据这种行为将不同的用户分组,在特定时段为特定的用户分组提供较多的资源,从而加快用户的上网速度,优化网站提供的服务。
2.可以通过浏览记录优化网站的结构,进而优化资源的配置,比如将用户耿喜闻乐见的网页放在更加靠前的位置上。
3.在云服务器上很有用,比如阿里云就需要这种服务。通过用户访问峰值的统计,进而调度服务器资源的分配,能节约成本,提高服务质量。
从数据中提取日志文件中的数据,将其保存在数据库中,如图所示。
下图来自于论文《一个简单的Web日志挖掘系统》。
清除掉无关的数据。
这个过程主要是根据请求URL的文件后缀筛选来进行,具体分析应该有不同的筛选措施。
1.IP相同,但用户代理中的配置文件改变,这就表明这是一个不同的用户。
(这根本不能做到精准的判断)
2.如果用户的请求路径和已经浏览的记录页面没有任何关系,有可能是一个不同的用户。
《Web数据预处理by侯枫》解释会话识别为:同一个用户访问的网络日志可能会间隔很长的时间,当间隔超过一定的界限,就将其视为用户的不同访问行为。
判断这种行为的方法主要有两种:
1.判断相邻两个(路径,时间)的时间差,与阀值对比。
2.判断最先和最后的两个(路径,时间)的时间差,与阀值对比。
因为浏览器有后退功能,后退功能指的是浏览器为了提高效率会将以前的页面缓存下来,用户再打开该网页就不用向服务器请求网页,而直接从缓存中得到的网页发送数据。这样日志文件就不连贯,仿佛凭空诞生了一个页面。
1.可以寻找最近的时间的引用页相同请求作为用户的浏览路径。
2.若站点的引用不完整,可以利用网站的拓扑结构代替。
《Web 站点拓扑结构获取方法研究》,《基于简化站点结构的Web路径完善技术》两篇论文大意如下:
先用深度优先或者广度优先弄一个爬虫,爬本地服务器的网页,确定超链接的转向,构建拓扑表。如果有和当前日志相链接的,就将其置为引用页。如果没有,则获取最近的和当前页面的共同祖先页面的页面。
在用户浏览的过程中会发生回退动作,通过最大前向路径算法可以计算出用户的前进的动作,去除用户的后退的动作。
把支持该前向前路径的数量定义为该路径的遍历算法的支持度,然后按照支持度对向前路径进行排序,构建频繁集。
(看到这里很尴尬,这篇论文到此结束,接下来是实验结果了……好水的论文……说好的推荐系统在哪里?)
接下来应该是利用该频繁集来构建关联规则了。
构建关联规则主要是利用两种方法,Aprior和FP-Tree。
网站的数据分析的并不只是日志的处理,还有对JavaScript的编辑处理,主要是获得用户的cookie中的信息。也有包嗅探器,是在转发过程中由转发服务器获得的信息。
专门用于统计分析Web服务器日志的免费程序:awstats、Webalizer。还有Google Analytics,可惜这个要交钱。
当数据较小的时候直接在内存中进行计算就可以达到目标,再大一些,就要用到数据库来进行运算,再大一些,就要用到Hadoop了。
Hadoop是伟大的Apache基金会下面的一套分布式系统,包括分布式文件系统(HDFS)、MapReduce计算框架、HBase等很多组件。
Hadoop经过数年的发展,目前已经很成熟了,尤其是其中的HDFS和MapReduce计算框架组件。数百台机器的集群已经被证明可以使用,可以承担PB级别的数据。
使用Hadoop来做日志分析,首先还是需要将日志存储在HDFS中,然后再使用它提供的MapReduce API编写日志分析程序。
Hive现在也是Hadoop项目下面的一个子项目,它可以让我们用SQL的接口来执行MapReduce,甚至提供了JDBC和ODBC的接口。
但是随着时间的流逝,问题的规模会越来越大,最后导致日志越来越难管理,甚至需要未日志做一个管理系统,这就是数据仓库了。
有些图片传不上来,感兴趣的去我的网盘下载:
https://pan.baidu.com/s/1jH99tT8