python 埋点_网站js埋点
js埋点
1.埋点作用:
页面埋点的作用:其实就是用于流量分析。而流量的意思,包含了很多:页面浏览数(PV)、独立访问者数量(UV)、IP、页面停留时间、页面操作时间、页面访问次数、按钮点击次数、文件下载次数等。而流量分析又有什么用处?
1) 网站统计
网站统计是指通过专业的网站统计分析系统(或软件),对网站访问信息的记录并归类,以及在此基础山的统计分析,如网站访问量的增长趋势图、用户访问最高时间、访问最多的网页(模块)、停留时间、用户使用的搜索引擎等,主要关键词、来路、入口、浏览深度、使用语言、所用浏览器种类、时段访问量统计分析、日段访问量统计分析以及周月访问量统计分析等网站访问数据的基础分析。
2) 提高网站的转化率
根据页面埋点可得到一些重要信息,它告诉你用户对网站的反应,以及如何提高网站流量、改进网站性能,了解用户访问网站的行为,为更好地满足用户需求提供支持。
3) 反应用户黏度
即使网站吸引了很多用户访问,但是通过流量分析发现,用户停留的时间非常短,重复访问用户不多,用户平均浏览的页面也少,这样的网站用户黏度不够,有流量但是没有忠实的用户,一旦有其它可替代网站,用户随时可能流失。这样的网站,如果不采取有效的运营措施,很难有长期发。
4) 为网站内容管理和网站的产品策划提供方向
通过流量分析,可以挖掘出整个网站哪个频道最有人气,频道之间的流量比例是多少,每个页面的流量是多少,哪个页面最受欢迎,每个页面中具体的哪个栏目点击 量最高,这样通过对频道、栏目、页面的具体流量分析和对比,可以挖掘出用户的需求,发现用户最关心什么内容,这对评估网站频道、内容、页面的价值有重要的 参考作用,也对网站内容下一步的优化有直接的参考意义。
比较常用的统计分析工具:谷歌分析、百度统计分析、腾讯统计分析等
2.埋点流程预览
首先通过一幅图总体看一下数据收集的基本流程。
首先,用户的行为会触发浏览器对被统计页面的一个http请求,这里姑且先认为行为就是打开网页。当网页被打开,页面中的埋点javascript片段会被执行,用过相关工具的朋友应该知道,一般网站统计工具都会要求用户在网页中加入一小段javascript代码,这个代码片段一般会动态创建一个script标签,并将src指向一个单独的js文件,此时这个单独的js文件(图1中绿色节点)会被浏览器请求到并执行,这个js往往就是真正的数据收集脚本。数据收集完成后,js会请求一个后端的数据收集脚本(图1中的backend),这个脚本一般是一个伪装成图片的动态脚本程序,可能由php、python或其它服务端语言编写,js会将收集到的数据通过http参数的方式传递给后端脚本,后端脚本解析参数并按固定格式记录到访问日志,同时可能会在http响应中给客户端种植一些用于追踪的cookie。
3.实际项目中的例子:
1) 页面:
1
2 var bi_params ={3 mobile : GetQueryString('phone'),4 code : GetQueryString('phone'),5 activityid : 'xiyijie',6 pagetype : 'bindsuccess'
7 };8 (function() {9 var bi_hm = document.createElement("script");10 bi_hm.src = "http://pic2.58.com/m58/app58/m_static/js/bi/tracker.js ";11 var s = document.getElementsByTagName("script")[0];12 s.parentNode.insertBefore(bi_hm, s);13 })();14
2) tracker.js
/*
* 设置cookie
*/
function setBICookie(name,value,days,domain){
try{
var exp = new Date();
exp.setTime(exp.getTime() + days*24*60*60*1000);
document.cookie = name + "=" + value + ";" + "expires=" + exp.toGMTString()+";path=/;" + (domain ? ("domain=" + domain + ";") : "");
}catch(e){}
}
/*
* 1.根据键取得对应的cookie
*/
function getBICookie(name) {
try{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}catch(e){}
}
/*
* 1.根据键删除对应的cookie
*/
function delCookie(name,domain){
try{
var date = new Date();
date.setDate(date.getDate() - 100000);
document.cookie = name + "=a; expires=" + date.toGMTString() + ";path=/" +";" + (domain ? ("domain=" + domain + ";") : "");
}catch(e){}
}
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
function trackClick(data){
try{
if("undefined" != typeof data){
writelog(data,"clickview");
}else{
writelog(null,"clickview");
}
}catch(e){}
}
function trackPageview(data){
try{
if("undefined" != typeof data){
writelog(data,"pageview");
}else{
writelog(null,"pageview");
}
}catch(e){}
}
function sendTrackerLog(a){(new Image).src=a}
function writelog(data,logtype){
var cookie_days = 730;//Cookie Save Days
var url = document.URL;
var cookie_domain = "." + url.replace(/http:\/\/.*?([^\.]+\.(com\.cn|org\.cn|net\.cn|[^\.\/]+))\/.+/, "$1");
var log_url = "http://xx.xxx.com/a.gif?r="+Math.random()+"&logv=1.0&type=" + logtype;
var bi_hmsr = "none";
if(getQueryString("hmsr")!=null&&getQueryString("hmsr")!=""){
bi_hmsr = getQueryString("hmsr");
setBICookie("bi_hmsr",bi_hmsr,cookie_days,cookie_domain);
}else{
if(getBICookie("bi_hmsr")!=null&&getBICookie("bi_hmsr")!=""){
bi_hmsr = getBICookie("bi_hmsr");
}else{
setBICookie("bi_hmsr",bi_hmsr,cookie_days,cookie_domain);
}
}
var bi_hmmd ="none";
if(getQueryString("hmmd")!=null&&getQueryString("hmmd")!=""){
bi_hmmd = getQueryString("hmmd");
setBICookie("bi_hmmd",bi_hmmd,cookie_days,cookie_domain);
}else{
if(getBICookie("bi_hmmd")!=null&&getBICookie("bi_hmmd")!=""){
bi_hmmd = getBICookie("bi_hmmd");
}else{
setBICookie("bi_hmmd",bi_hmmd,cookie_days,cookie_domain);
}
}
var bi_hmpl ="none";
if(getQueryString("hmpl")!=null&&getQueryString("hmpl")!=""){
bi_hmpl = getQueryString("hmpl");
setBICookie("bi_hmpl",bi_hmpl,cookie_days,cookie_domain);
}else{
if(getBICookie("bi_hmpl")!=null&&getBICookie("bi_hmpl")!=""){
bi_hmpl = getBICookie("bi_hmpl");
}else{
setBICookie("bi_hmpl",bi_hmpl,cookie_days,cookie_domain);
}
}
var bi_hmkw ="none";
if(getQueryString("hmkw")!=null&&getQueryString("hmkw")!=""){
bi_hmkw = getQueryString("hmkw");
setBICookie("bi_hmkw",bi_hmkw,cookie_days,cookie_domain);
}else{
if(getBICookie("bi_hmkw")!=null&&getBICookie("bi_hmkw")!=""){
bi_hmkw = getBICookie("bi_hmkw");
}else{
setBICookie("bi_hmkw",bi_hmkw,cookie_days,cookie_domain);
}
}
var bi_cookieid = getBICookie("bi_cookieid");
if(bi_cookieid==null||bi_cookieid==""){
bi_cookieid=(new Date).valueOf()+""+parseInt(Math.random()*10000000000);
setBICookie("bi_cookieid",bi_cookieid,cookie_days,cookie_domain);
}
var referrer=encodeURIComponent(document.referrer);
if(referrer==null||referrer==""){
referrer="none";
}
log_url+="&hmsr="+bi_hmsr+"&referrer="+referrer+"&cookieid="+bi_cookieid +"&hmpl="+bi_hmpl +"&hmmd="+bi_hmmd+"&hmkw="+bi_hmkw;
if(data!=null&&logtype=="pageview"){
for(var key in data){
var value=data[key];
log_url += "&"+key+"=" + value;
}
}else if(data!=null&&logtype=="clickview"){
log_url += "&" + data;
}
sendTrackerLog(log_url);
}
try{
if("undefined" != typeof bi_params){
writelog(bi_params,"pageview");
}else{
writelog(null,"pageview");
}
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
//调用百度统计代码
hm.src = "//hm.baidu.com/hm.js?b63b6a99a304a1aa8ad31744d27c77e5";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
}catch(e){}
4.参考网址:
python 埋点_网站js埋点相关推荐
- h5 神策埋点_前端 神策埋点那点事儿
首先你需要在你的项目里面下载 sa-sdk-javascript 此插件 main.js 引入 import sensors from'sa-sdk-javascript' 并初始化一下 //神策初始 ...
- 网站统计中的数据收集原理及实现(js埋点实现)
网站统计中的数据收集原理及实现 网站统计 埋点 Web Openresty 网站数据统计分析工具是网站站长和运营人员经常使用的一种工具,比较常用的有谷歌分析.百度统计和腾讯分析等等.所有这些统计分析工 ...
- python 埋点_数据埋点方案简述
数据是机器学习的前提,前面使用Python爬虫抓取数据篇介绍了通过爬虫抓取网页的方式采集数据.对于新产品,最重要的事项是获取用户,参看前面互联网产品怎么发掘种子用户和意见领袖 这篇. 在产品上线之后, ...
- python埋点测试_埋点进化论:从埋点到无埋点
鲁迅先生说:世界上本没有埋点,需要数据的人多了,也就有了埋点. 埋点的诞生 在最初的互联网世界中,并没有埋点的概念.大家并不关心流量从哪里来,用户在网站上做了什么事,一切都是野蛮生长. 随着业务的增长 ...
- 前端埋点需求(vue.js)
提示:基于运营活动的需求,需要对用户行为进行埋点监控,因此以下文章是代码埋点的实现. 文章目录 前言 一.埋点思考 二.埋点实现 1.埋点工具类实现(operationLog.js) 2.埋点监控的开 ...
- h5 神策埋点_数据分析(一)埋点
1. 埋点是什么? 埋点是数据采集领域(尤其是用户行为数据采集领域)的术语,指的是针对特定用户行为或事件进行捕获.处理和发送的相关技术及其实施过程.比如用户某个按钮点击次数.浏览某个一刻吗时长 ...
- python制作一个教学网站_小白如何入门Python? 制作一个网站为例
首先最重要的问题是为什么要学习python?这个问题这个将指导你如何学习Python和学习的方式. 以你最终想制作一个网站为例.从一个通用的学习资源列表开始不仅会消磨你的激情,而且你获得的知识很难应用 ...
- python能做大型网站么_前几天有人讨论Python做的大型网站
除了 http://www.v2ex.com/t/18508 提到的众所周知的 google youtube douban sourceforge yahoo delicious 还有 http:// ...
- python埋点自动化_iOS自动化埋点的实现
一.埋点的作用: 应用趋势分析:清晰展现应用的新增用户.活跃用户.启动次数.版本分布.行业指标等数据,方便从整体掌控应用的运营情况及增长动态. 渠道分析:在哪里推广最有效?从哪里获取的用户最有价值?通 ...
最新文章
- 【Java】字符串(二)
- 【ICLR2022】分布外泛化的不确定性建模
- oracle hyperion招聘,Hyperion Planning功能顾问
- python基础---闭包、装饰器
- 编写线程安全的Java缓存读写机制 (原创)
- Azkaban任务调度(使用带有依赖的任务调度)【mapreduce数据清洗,数据入hive库,kylin预编译、数据分析】
- SpringMVC (六)注解式开发
- 1.3编程基础之算术表达式与顺序执行 05 计算分数的浮点数值
- 汉堡王,你不要给我们AI泼脏水
- QT:QByteArray和QByteArray、char *(转)
- rgba与16进制互相转换
- 关于java实习报告周记_2019年度热门关于java实习报告周记优秀七篇
- Springboot项目中添加Quartz定时任务
- scikit 线性回归_使用scikit学习线性回归学习和体育运动nba数据数据科学
- python numpy逆_Numpy 中的矩阵求逆实例
- EMD(Exploiting Modification Direction)
- Git在同一台电脑上连接多个仓库
- 目录没有.kaggle文件夹的解决方法
- jupter 使用
- 《网络攻防》第七周学习总结
热门文章
- php icon素材,Feather Icon - 简单漂亮的免费开源图标库
- 英语单词学习-词根词缀记忆思维导图
- 最简单的FRP内网穿透教程
- Linux的主机名基础
- dp主机_DP接口与HDMI接口的区别?
- 飞凌单片机解密_GX28E01单片机解密
- [Leetcode][分治法]相关题目汇总/分析/总结
- linux springboot开机启动,SpringBoot 部署到Linux开机自启动和运行
- 用python制作电子时钟包装_使用电子水墨屏和树莓派制作的时钟,Epaper_clock
- 排兵布阵问题java语言_hdu 4539 郑厂长系列故事——排兵布阵