js抓取网页内容(关于GoogleAnalytics的一些维度和指标(amp)(图) )
优采云 发布时间: 2022-03-08 11:24js抓取网页内容(关于GoogleAnalytics的一些维度和指标(amp)(图)
)
概述
深入了解数据的维度和指标是正确理解和分析数据的开始。Google Analytics (GA) 有许多内置的维度和指标。本系列文章将对这些维度和指标一一整理讲解。结合 GA 官方 JavaScript 库和 SDK,我们将深入探讨这些数据是如何获取和传递的……
注:本文默认封装为GA中的维度或指标。
&
页面和主机名是 GA 中最常用的维度之一。
JS: document.location.pathname + document.location.search
例如:"/test?key=123"
JS: document.location.hostname
例如:"127.0.0.1" / "analytics.google.com"
以上两个维度在GA中应用比较广泛,比如推荐排除/跨域...
可用于行为定位、模型创建、目标设定……
那么这两个指标在GA中是如何得到的呢?
我们知道 GA 通过向 Google 服务器发送带有参数的请求来进行数据采集。比如我们最常见的页面浏览量是:pageview
可能是发送了如下所示的请求。
请求中,t代表匹配类型,这里是pageview;dl 代表文档位置URL,这里是
; dp 表示文档路径,在本例中为 /test#ga_dp。
那么这个请求发送给 GA 后,GA 显示的网页和主机名是什么?不用在这里买了。
/test#ga_dp
127.0.0.1
那么还有一个问题,如果这里没有发送 dp 怎么办?因为如果我们平时注意的话,一般都是在pageview中看到dl,而除非有特殊设置,我们很少看到dp
答案是
/test?key=123
之所以这样改动,是因为dl是analytics.js或者gtag.js(简称GA_js库)发送的默认参数,而dp是可选参数。默认发送dl时,GA_js库会自动抓取以下浏览器参数,即:
document.location.origin + document.location.pathname + document.location.search
形成 dl 并发送。发送给GA后,GA服务器会对dl传递的参数进行反汇编,取出主机名和URI部分,分别赋值&两个维度。
但是如果除了默认发送的 dl 之外还指定了两个可选参数 dh(文档主机名)和 dp(文档路径),GA 会先使用指定的 dh 或 dp。
所以对于虚拟页面的价值如何传递而纠结的同学,可以在这里安心。您可以使用综合浏览量发送位置或页面,但必须发送位置。
Ok~这个问题就结束了,但是如果你和GA接触很久了,你可能还有一些其他的问题,比如:
如果我在 dl 参数中传递一个随机数,例如:test:///test?protocol:test 怎么办?—— 请求无效。如果是dl参数,我传一个数字,如上,还要传dp的值吗?—— 请求有效,网页通过dp的值。如果我在A页面部署默认的GA基础代码,同时在网页出现弹窗的时候发送一个dummy page事件(B页面),弹窗有点击事件,如果我进入网页,然后触发弹窗,然后点击事件,那么此时事件所属的网页是A还是虚拟页面B——如果是用set命令设置的pageview ,此时事件所属的网页是B,不仅是弹窗上的B,而且在下面刷新页面之前的所有事件都是B。如果在默认发送浏览量中添加参数{'page'},则事件所属的页面为A,其他事件不受该页面影响。(出现这种现象的原因是GA在加载analytics.js时默认会在tracker中设置tracker的dl参数,后续事件会使用这个参数,除非被显式值覆盖。)如果我的网页中的锚点(#) 后面的信息在区分网页中起着重要的作用。GA会抓住它吗?- 不,如果我传递的dl是实际的url(document.location.href),它必须设置为传递。那么传给GA的数字,网页传过来的值中#后面的部分会有影响吗?GA 会处理 dl 传递值吗?-- 将被处理,但 # 部分不受影响。... 该事件所属的页面为A,其他事件不受该页面影响。(出现这种现象的原因是GA在加载analytics.js时默认会在tracker中设置tracker的dl参数,后续事件会使用这个参数,除非被显式值覆盖。)如果我的网页中的锚点(#) 后面的信息在区分网页中起着重要的作用。GA会抓住它吗?- 不,如果我传递的dl是实际的url(document.location.href),它必须设置为传递。那么传给GA的数字,网页传过来的值中#后面的部分会有影响吗?GA 会处理 dl 传递值吗?-- 将被处理,但 # 部分不受影响。... 该事件所属的页面为A,其他事件不受该页面影响。(出现这种现象的原因是GA在加载analytics.js时默认会在tracker中设置tracker的dl参数,后续事件会使用这个参数,除非被显式值覆盖。)如果我的网页中的锚点(#) 后面的信息在区分网页中起着重要的作用。GA会抓住它吗?- 不,如果我传递的dl是实际的url(document.location.href),它必须设置为传递。那么传给GA的数字,网页传过来的值中#后面的部分会有影响吗?GA 会处理 dl 传递值吗?-- 将被处理,但 # 部分不受影响。... (出现这种现象的原因是GA在加载analytics.js时默认会在tracker中设置tracker的dl参数,后续事件会使用这个参数,除非被显式值覆盖。)如果我的网页中的锚点(#) 后面的信息在区分网页中起着重要的作用。GA会抓住它吗?- 不,如果我传递的dl是实际的url(document.location.href),它必须设置为传递。那么传给GA的数字,网页传过来的值中#后面的部分会有影响吗?GA 会处理 dl 传递值吗?-- 将被处理,但 # 部分不受影响。... (出现这种现象的原因是GA在加载analytics.js时默认会在tracker中设置tracker的dl参数,后续事件会使用这个参数,除非被显式值覆盖。)如果我的网页中的锚点(#) 后面的信息在区分网页中起着重要的作用。GA会抓住它吗?- 不,如果我传递的dl是实际的url(document.location.href),它必须设置为传递。那么传给GA的数字,网页传过来的值中#后面的部分会有影响吗?GA 会处理 dl 传递值吗?-- 将被处理,但 # 部分不受影响。... ) 如果我的网页中的锚点 (#) 后面的信息对区分网页起重要作用。GA会抓住它吗?- 不,如果我传递的dl是实际的url(document.location.href),它必须设置为传递。那么传给GA的数字,网页传过来的值中#后面的部分会有影响吗?GA 会处理 dl 传递值吗?-- 将被处理,但 # 部分不受影响。... ) 如果我的网页中的锚点 (#) 后面的信息对区分网页起重要作用。GA会抓住它吗?- 不,如果我传递的dl是实际的url(document.location.href),它必须设置为传递。那么传给GA的数字,网页传过来的值中#后面的部分会有影响吗?GA 会处理 dl 传递值吗?-- 将被处理,但 # 部分不受影响。...
了解了这一点后,我们似乎对 & 这两个指标有了更多的了解。但是我们可以再深入一点吗?
当然,你会怎么写这个 文章
以analytics.js为例,扩展analytics.js,看看GA是怎么得到的。
搜索关键词 location dl后,可以找到如下代码:
其他代码就省略了,当然如果你好奇,也可以关注我的另一个系列文章《谷歌analytics.js源码分析》。
这里,Kb = '位置'
a.set等的取值以及在对应tracker中设置参数位置为:
可以看出,实际上dl的传递值是在analytics.js中设置的,不是GA账号处理的。
##
现在我提到了,顺便说一句。
登陆页面的定义众所周知,这里不再赘述。在 GA 中,着陆页定义为
正常情况下,这自然是没有问题的,但是遇到意外情况,这个解释就显得有些不清楚了。
例如:
假设用户进入某个网站页面A,在页面上发送事件e_1,然后进入页面B。
但是由于实际登陆页面A的页面浏览代码部署错误,导致页面浏览丢失,那么此时事件e_1的登陆页面是什么呢?
A: (not set)
B: 网页B
答案将在下一期揭晓,也可以私下交流心得~
白色 白色