网站流量统计系统.docx

上传人:b****6 文档编号:5063211 上传时间:2022-12-12 格式:DOCX 页数:20 大小:236.67KB
下载 相关 举报
网站流量统计系统.docx_第1页
第1页 / 共20页
网站流量统计系统.docx_第2页
第2页 / 共20页
网站流量统计系统.docx_第3页
第3页 / 共20页
网站流量统计系统.docx_第4页
第4页 / 共20页
网站流量统计系统.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

网站流量统计系统.docx

《网站流量统计系统.docx》由会员分享,可在线阅读,更多相关《网站流量统计系统.docx(20页珍藏版)》请在冰豆网上搜索。

网站流量统计系统.docx

网站流量统计系统

网站流量统计系统

摘要

网站流量统计是改进网站服务的重要手段之一,通过获取用户在网站的行为,可以分析出哪些内容受到欢迎,哪些页面存在问题,从而使网站改进活动更具有有针对性。

常用的网站流量统计指标包括三类:

(1)网站流量指标,如在一定统计周期那网站的独立用户数量、总用户数量、网页浏览数量、每个用户的页面浏览数量等;

(2)用户行为指标,如用户来源网站、用户所使用的搜索引擎及其关键词、在不同时段的访问量情况等;(3)用户浏览网站的方式,如用户上网设备类型、用户浏览器的名称和版本、访问者电脑分辨率显示模式等。

获取网站访问统计资料通常有两种方法:

(1)在自己的网站服务器端安装统计分析软件进行监测;

(2)采用第三方提供的网站流量分析服务。

两种方法各有利弊,采用第一种方法可以方便地获得详细的网站统计信息,并且除了访问统计软件的费用之外无需其他直接的费用,但由于这些资料在自己的服务器上,因此在向第三方提供有关数据时缺乏说服力;第二种方法则正好具有这种优势,但通常要为这种服务付费,虽然也有一些免费网站流量统计服务,但由于在功能方面会有一定的限制,或者通常需要在网站上出现服务商的标识甚至广告。

因此本人以第三方统计网站流量为设计基础,运用Python编程语言及其web开发框架Django,结合SQLite3数据库,完成对访客的IP地址,浏览器,操作系统,浏览页面的记录,并按时间单位进行统计统计。

关键词网站流量统计;Python;Django;SQLite;

第1章绪论

1.1网站流量统计的动机

在用户访问模式、Web软件组件的性能和基本网络基础设施的特征参数提取中,Web流量测量起着关键的作用。

内容创建者可以从用户浏览模式测量那里收集有价值的数据。

考虑销售图书的电子商务站点,站点访问者数量的统计数字将影响Web页面里嵌广告带来的广告收入。

另外,分析用户访问模式可以指导Web站点重新设计的过程。

设想有许多用户访问主页,并点击特定次序的超文本链接以查找到平装书籍。

这将激发改变主页的想法,以提供给含有大量普通图书列表的直接链接。

知道用户停留在网站有多长时间和下载了多少网页将是很有用的。

如果许多用户在查看了一两页后就离开的话,那么网站就需要更好地组织或增加更令人感兴趣的资料。

在连续网页间迅速切换的用户可能不会发现他们想要的信息。

于是内容创建者可通过允许用户根据主题搜索站点来解决这个问题。

内容的创建者也可能对知道用户怎么到达Web站点感兴趣。

例如,设想对图书网站的访问请求的25%是用户从某个新闻网站点击超文本链接而来,那么图书销售商可能会在这个新闻网站继续做广告。

测量也可以用来刻画Web站点的性能特征。

1.2网站流量统计指标

网站流量统计的基础是获取网站流量的基本数据,网站流量统计指标大致可以分为三类,每类包含若干数量的统计指标。

具体的网站流量统计是通过不同的IP登陆网站来计算的。

也就是说,一天内同一台机器登陆网站的次数不论是多少,在流量统计中只记为一次有效登陆,这种计算方法可以较为科学的计算出有多少人登陆过该网站,有效的防止了有意的对网站进行刷新从而增加自己网站的点击率。

网站流量指标:

1、独立的访问者数量(uniquevisitors);

2、重复的访问者数量(repeatvisitors);

3、页面浏览数(pageviews);

4、每个访问者的页面浏览数(pageviewsperuser);

5、某些具体文件/页面的统计指标,如页面显示次数、文件下载次数等。

用户行为指标:

1、用户在网站的停留时间;

2、用户来源网站(也叫“引导网站”);

3、用户所使用的搜索引擎及其关键词;

4、在不同时段的用户访问量情况等。

用户浏览网站的方式:

1、用户上网设备类型;

2、用户浏览器的名称和版本;

3、访问者电脑分辨率显示模式;

4、用户所使用的操作系统名称和版本;

5、用户所在地理区域分布状况等。

1.3网站流量统计原理

当浏览者访问网站时,会向网站所在服务器发送HTTP请求,由于网页是富媒体聚合形式,当引用第三方的图片、音频、视频时,也会向媒体所在服务器发送请求。

通过向所要统计网站页面中插入一段HTML代码来实行转向访问。

HTTP请求标头(Request-Header)中包含了用户代理(User-Agent),引用地址(Referer),以及通过WEB服务器获得客户端的IP地址。

绝大多数HTTP通讯由用户代理进行初始化,并通过它来组装请求以获取存储在一些原始服务器上的资源。

在最简单的情况下,通过用户代理与原始服务器之间一个简单的连接就可以完成。

图1.1HTTP通讯过程

HTTP/1.0的请求标头允许客户端向服务器端传递该请求的附加信息及客户端信息。

该域做为请求的修饰部分,遵照编程语言程序调用参数的语法形式。

[1][2]

Request-Header=Authorization;用户代理的身份凭证

|From;用户的电子邮件地址

|If-Modified-Since;同最后一次修改时间的比较

|Referer;引用页面的URI

|User-Agent;用户代理软件的信息

HTTP/1.1请求标头已经增加到了19个,不过增加的部分并不包含所要收集的数据,所以本文不进行列举。

第2章Python语言及Django框架简介

2.1Python语言简介

Python是一门跨平台的脚本语言,Python规定了一个Python语法规则,实现了Python语法的解释程序就成为了Python的解释器,我们用的比较多的是C版本的Python,也就是使用C语言实现的Python解释器,除此之外还有使用Java实现的Jython和使用.NET实现的IronPython,这些实现可以使Python用户充分利用己有的Java及.NET资源。

同时,Python支持几乎所有常用的操作系统,包括:

Windows/DOS、Macintosh、Linux及FreeBSD。

及很多不常用的操作系统,包括AIX、AS/400(OS/400)、BeOS、OS/2、OS/390与z/OS、PalmOS、PlayStation与PSP、Psion、QNX、RISCOS、Series60、SparcSolaris、VMS、VxWorks、WindowsCE或PocketPC、SharpZaurus、MorphOS等。

可扩充性可说是Python作为一种编程语言的特色。

新的内置模块(module)可以用C或C++写成。

而我们也可为现成的模块加上Python的界面。

Python可以使用户避免过分的语法的羁绊而将精力主要集中到所要实现的程序任务上。

因此Python具有非常庞大的程序库,通过它们可以快速完成绝大部分常用的任务,如:

从某个URL中获取信息、正则表达式、获得某个文件或字符串的MD5特征字符串、多线程、XML及HTML的分析等。

Python也被称为是一门清晰的语言。

因为它的作者在设计它的时候,总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了

2.2Django框架简介

Django是一个开放源代码的Web应用框架,由Python写成。

采用了MVC的设计模式,即模型M,模版T和视图控制器V。

它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。

并于2005年7月在BSD许可证下发布。

这套框架是以比利时的吉普赛爵士吉他手DjangoReinhardt来命名的。

Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。

Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don'tRepeatYourself)。

在Django中Python被普遍使用,甚至包括配置文件和数据模型。

Django框架的核心包括:

一个对象-关系的映射器,用作数据模型(以Python类的形式定义)和关系数据库间的媒介;一个基于正则表达式的URL分发器;一个视图系统,用于处理请求;以及一个模板系统。

核心框架中还包括:

1、一个轻量级的、独立的Web服务器,用于开发和测试。

2、一个表单序列化及验证系统,用于HTML表单和适于数据库存储的数据之间的转换。

3、一个缓存框架,并有几种缓存方式可供选择。

4、中间件支持,允许对请求处理的各个阶段进行干涉。

5、内置的分发系统允许应用程序中的组件采用预定义的信号进行相互间的通信。

6、一个序列化系统,能够生成或读取采用XML或JSON表示的Django模型实例。

7、一个用于扩展模板引擎的能力的系统。

Django包含了很多应用在它的“contrib”包中,这些包括:

1、一个可扩展的认证系统

2、动态站点管理页面

3、一组产生RSS和Atom的工具

4、一个灵活的评论系统

5、产生Google站点地图(GoogleSitemaps)的工具

6、防止跨站请求伪造(cross-siterequestforgery)的工具

7、一套支持轻量级标记语言(Textile和Markdown)的模板库

8、一套协助创建地理信息系统(GIS)的基础框架

2.3SQLite数据库简介

SQLite是遵守ACID的关联式数据库管理系统,它包含在一个相对小的C库中。

它是D.RichardHipp建立的公有领域项目。

不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。

所以主要的通信协议是在编程语言内的直接API调用。

这在消耗总量、延迟时间和整体简单性上有积极的作用。

整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。

它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。

库实现了多数的SQL-92标准,包括事务,就是代表原子性、一致性、隔离性和持久性的(ACID),触发器和多数的复杂查询。

不进行类型检查。

你可以把字符串插入到整数列中。

例如,某些用户发现这是使数据库更加有用的创新,特别是与无类型的脚本语言一起使用的时候。

其他用户认为这是主要的缺点。

多个进程或线程可以访问同一个数据而没有问题。

可以并行的满足多个读访问。

只有在其他访问当前不被服务的时候才能满足写访问;否则写访问失败并带有一个错误代码(也可以在可配置的超时过期之后自动的重试)。

提供了叫做sqlite的一个独立程序用来查询和管理SQLite数据库文件。

它也充当写使用SQLite库的应用的一个例子

第3章需求分析

3.1系统描述

网站流量统计系统包括三个基本部分,一个是记录访客部分,包括记录访客的IP地址,浏览器信息,操作系统信息,浏览时间,离开时间,浏览页面,会话记录。

一个是系统管理部分,包括用户管理,用户组管理,权限管理,站点管理,访客管理。

还有一个是统计部分,包括在线人数统计,综合数据统计,单日流量统计等。

3.2统计网站识别

本系统由于要对多个网站进行统计,所以必须区分访问不同站点的访客。

每个网站都由系统生成唯一的编号,通过让不同的网站引用名为该网站编号的图片,就能区分出是来自哪个网站的访客。

3.3页面识别

一个网站包含多个页面。

区分访客对不同页面的访问对统计来说意义重大。

在图片请求Request中的Referer包含引用图片的网页的网址。

通过它不仅能区分访客访问什么页面,还能判断是否是属于某网站域名下的URL,以过滤第三方引用图片造成的Request。

3.4访客识别

区分不同的访客是统计系统的关键所在,一般认为一个IP代表一个访客。

但是当多个内网访客共用一个外网IP时,就会造成只有一个访客的假像。

通过基于Cookie的会话(session)机制,就能区分以浏览器客户端为单位的用户。

3.5停留时间

Http是一个无状态协议,同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存有会话有关的任何信息。

因此需要依赖Ajax技术,由客户端每隔数秒想服务器发送Request,以维持状态的持续性。

当关闭页面时,Request发送就会停止,由此可以确定访客的停留时间.

第4章系统设计

4.1数据库关系结构图

单向箭头表示多对一关系,双向箭头表示多多对多关系。

图4.1数据库结构关系示意图

4.2数据库表结构

4.2.1基本表

1、访客表描述

表4.1访客表描述

字段名

含义说明

别名

类型

允许空

是否主键

是否外键

id

唯一标识

integer

addr

IP地址

IP

char(15)

browser

浏览器名

浏览器

varchar(30)

version

浏览器版本

浏览器版本

varchar(20)

os

操作系统

操作系统

varchar(30)

os_version

操作系统版本

操作系统版本

varchar(20)

session

会话标识

varchar(32)

refere

引用路径

路径

varchar(200)

start

访客访问时间

访问时间

datetime

end

访客离开时间

离开时间

datetime

agent

用户代理信息

用户代理

varchar(300)

website_id

网站标识

integer

2、网站表描述

表4.2网站表描述

字段名

含义说明

别名

类型

允许空

是否主键

是否外键

id

唯一标识

integer

name

网站名

网站名

varchar(300)

url

网站网址

URL

varchar(200)

user_id

用户标识

integer

3、用户表描述

表4.3用户表描述

字段名

含义说明

别名

类型

允许空

是否主键

是否外键

id

唯一标识

integer

username

用户名

用户名

varchar(30)

first_name

名字

名字

varchar(30)

last_name

姓氏

姓氏

varchar(30)

email

E-mail地址

E-mail地址

varchar(75)

password

帐号密码

密码

varchar(128)

is_staff

是否职员

职员状态

bool

is_active

是否可用

有效

bool

is_superuser

是否超级用户

超级用户状态

bool

last_login

最后登陆时间

上次登录

datetime

date_joined

帐号注册时间

加入日期

datetime

4、用户组表描述

表4.4用户组表描述

字段名

含义说明

别名

类型

允许空

是否主键

是否外键

id

唯一标识

integer

name

组名

组名

varchar(30)

5、权限表描述

 

表4.5用户权限表描述

字段名

含义说明

别名

类型

允许空

是否主键

是否外键

id

唯一标识

integer

name

权限名

权限名

varchar(30)

6、消息表描述

表4.6用户消息表描述

字段名

含义说明

别名

类型

允许空

是否主键

是否外键

id

唯一标识

integer

user_id

权限名

权限名

varchar(30)

message

权限名

权限名

text

4.2.1关系表

1、用户组和权限关系表

表4.7用户组和用户权限关系表描述

字段名

含义说明

别名

类型

允许空

是否主键

是否外键

id

唯一标识

integer

group_id

用户组标识

integer

permission_id

权限标识

integer

2、用户和用户组关系表

表4.8用户和用户组关系权限表描述

字段名

含义说明

别名

类型

允许空

是否主键

是否外键

id

唯一标识

integer

user_id

用户组标识

integer

group_id

权限标识

integer

3、用户和权限关系表

 

表4.9用户和权限表描述

字段名

含义说明

别名

类型

允许空

是否主键

是否外键

id

唯一标识

integer

user_id

用户标识

integer

group_id

用户组标识

integer

第5章系统实现

5.1访客记录的实现

主要从客户端浏览器的请求中获得访客的IP地址,浏览器信息,操作系统信息,浏览时间,浏览页面。

图5.1数据库结构关系示意图

统计服务器从浏览器客户端的Request中获取HTTP_USER_AGENT,REMOTE_ADDR,HTTP_REFERER。

浏览器客户端每数秒发送一个请求以维持长连接状态。

5.2管理界面的实现

5.2.1注册页面

在该页面注册的用户为普通用户,具有USERS组权限,即添加网站,修改网站,删除网站,查看统计。

图5.2注册页面

5.2.2登录页面

这是系统的唯一接口,所有用户都要在这登录才能进行下一步操作,需要客户端浏览器支持Cookie。

图5.3登录页面

5.2.3超级用户页面

超级用户能对所有用户,用户组,网站,访客数据进行所有权限管理。

图5.4超级用户页面

5.2.4网站管理

在网站管理页面中,可以进行网站的添加删除和修改。

网站信息包括网站名,网站的URL。

其中网站的URL必须保证其可访问性。

图5.5网站管理页面

5.2.5访客信息

访客中包含访客的IP,浏览器,操作系统,访问时间,离开时间。

以及按访问时间,浏览器,操作系统分组查看信息。

只有超级用户才能对访客信息进行添加删除修改。

图5.6访客管理页面

5.2.6用户管理

用户管理只有超级用户用户才能访问,可以添加删除用户,及修改用户的用户名,密码,名字,姓氏,E-mail地址,职员状态,有效性,权限,用户组。

图5.7用户管理页面

图5.8用户修改页面

5.2.7用户组管理

用户组管理只有超级用户用户才能访问,可以添加删除用户组,及修改用户组的对各个表的操作权限。

图5.9用户组管理页面

图5.10用户组管理页面

5.3统计界面的实现

5.3.1在线人数统计

在线人数为当前15分钟,10分钟和5分钟内浏览某网站的访客数。

其中uv代表独立用户(UniqueVisitor)。

图5.11在线人数统计

5.3.2综合统计报告

综合统计中包含pv,uv,ip以天为单位的数据,其中PV代表页面访问量,UV代表独立访客,IP代表独立IP。

图5.12综合统计报告

5.3.3单日统计报告

统计某日内的以小时为单位的pv,uv,ip总数。

图5.13单日统计报告

第6章系统测试

6.1功能测试

6.1.1链接测试

链接是web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。

链接测试可分为三个方面。

首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的url地址才能访问。

链接测试可以自动进行,现在已经有许多工具可以采用。

链接测试必须在集成测试阶段完成,也就是说,在整个web应用系统的所有页面开发完成之后进行链接测试。

6.1.2表单测试

当用户给web应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。

在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。

例如:

用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。

如果使用了默认值,还要检验默认值的正确性。

如果表单只能接受指定的某些值,则也要进行测试。

例如:

只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。

6.1.3cookies测试

cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用cookies访问了某一个应用系统时,web服务器将发送关于用户的信息,把该信息以cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。

如果web应用系统使用了cookies,就必须检查cookies是否能正常工作。

测试的内容可包括cookies是否起作用,是否按预定的时间进行保存,刷新对cookies有什么影响等。

6.1.4设计语言测试

web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的html等。

当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。

除了html的版本问题外,不同的脚本语言,例如Java、JavaScript、activex、vbscript或perl等也要进行验证。

6.1.5数据库测试

在web应用技术中,数据库起着重要的作用,数据库为web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。

在web应用中,最常用的数据库类型是关系型数据库,可以使用sql对信息进行处理。

在使用了数据库的web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。

数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。

6.2性能测试

6.2.1连接速度测试

用户连接到web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。

当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。

如果web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。

另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。

而且,连接速度太慢,还可能引起数据丢失

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1