前言
在现代网络应用中,数据分析是评估网站性能和用户行为的关键工具,而 Google Analytics (GA) 提供了丰富的数据分析功能,帮助开发者和业务人员洞察用户访问模式。为了能够高效地集成和调用 Google Analytics API,Python + FastAPI 是一种强大且灵活的技术组合。Python 提供了成熟的 Google API 客户端库,FastAPI 则以其异步、高性能的特点,在构建 RESTful 服务接口时表现优异。
本指南将介绍如何利用 Python 和 FastAPI 调用 Google Analytics API,获取网页的访客数 (UV) 和浏览量 (PV) 等关键指标。通过将 Google Analytics 数据与 FastAPI 相结合,您可以构建一个灵活的数据访问层,为后续的业务分析和报告生成提供支持。
Google 云平台设置
首先,我先介绍下用户账户和服务账户的区别
用户账户:适用于需要用户直接交互并授权的场景,例如个性化的用户数据访问或社交功能。
服务账户:适用于后台服务、自动化脚本或系统间的数据访问,例如批量数据处理、定时任务或系统间的API调用。
我们下面采用的是服务账户进行调用
1.GA4创建
首先,我们来到下面的链接中,我们进行创建一个新的服务,填写必须的名称等.https://analytics.google.com/
2.当设置完成后,需要将代码设置到你需要监控的页面中

如上图,我这个已经是设置完成的状态,当你初始化时,会给你提供一个新的代码,自己进行嵌入即可。例如VUE,我们可以直接嵌入到入口文件中,即index.html文件。需要等待大概24小时,数据就会更新到你的页面中。
3.Google API调用设置
我们来到Google 云平台首页,进入下面的页面中,在使用Google API之前,我们需要先启用对应的API权限。

随后,你们可以自己启动自己需要的API,点击页面中的启用API和服务。进行启用即可,我们主要启动的是Google Analytics Data API。其他的可以到云平台开发上面去看。

4.Google API服务账户设置

点击创建凭据,随后点击创建服务账号。进入创建服务账号流程,按照你的需求进行设置即可。随后,账号设置完成后,Google将会返回一个json文件。
这个文件一定要保存好。千万不要进行泄露。他关系着你服务的安全性,
这个文件一定要保存好。千万不要进行泄露。他关系着你服务的安全性,
这个文件一定要保存好。千万不要进行泄露。他关系着你服务的安全性,
重要的事情说三遍。虽然Google 会自动禁用发在公网的服务账号。但是还是自己保存好吧

5.服务账号对接你需要的服务
随后,我们来到GA4的首页,https://analytics.google.com/,我们需要将你刚刚生成的服务账号添加到这个GA4的账号管理页面中。
需要注意的是。这个里面的账号必须和你刚刚生成的一样,否则无法验证通过。
Fastapi进行API调用
包安装
google-api-python-client
google-auth
google-analytics-data
UVPV获取实现
@BlogApp.get("/blogs/total_uvpv")
async def get_total_uvpv():
async with db_session() as session:
try:
# 从阿里云 OSS 获取 Google Analytics 密钥
jsonkey = AliOssPrivateDocument()
JSON_KEY_FILE = jsonkey.GoogleAnalytics()
JSON_KEY_FILE_dict = json.loads(JSON_KEY_FILE.decode('utf-8'))
credentials = service_account.Credentials.from_service_account_info(JSON_KEY_FILE_dict)
scoped_credentials = credentials.with_scopes(
['https://www.googleapis.com/auth/analytics.readonly']
)
property_id = "457560039" # GA4 属性 ID
# 使用传递的凭据创建客户端
client = BetaAnalyticsDataClient(credentials=scoped_credentials)
# 构造查询请求:获取全站数据
request = RunReportRequest(
property=f'properties/{property_id}', # 替换为你的 GA4 属性 ID
dimensions=[], # 不需要按维度拆分数据,获取整体数据
metrics=[{'name': 'activeUsers'}, {'name': 'screenPageViews'}], # UV 和 PV 指标
date_ranges=[{'start_date': '2024-08-01', 'end_date': 'today'}] # 建站日期到今天
)
response = client.run_report(request=request)
# 初始化 UV 和 PV 数据
total_uv = 0
total_pv = 0
# 提取 UV 和 PV 数据
for row in response.rows:
total_uv = row.metric_values[0].value
total_pv = row.metric_values[1].value
# 返回总 UV 和 PV
return {
"data": {
"UV": total_uv,
"PV": total_pv
},
"code": 20000
}
except GoogleAuthError as auth_error:
return {"error": "Authentication failed", "message": str(auth_error), "code": 40002}
except Exception as e:
return {"error": "Internal Server Error", "message": str(e), "code": 50000}
其中,from_service_account_info还有类似的方法from_service_account_file。可以指定一个证书文件地址。进行凭据生成,我的是放到oss上进行存储,使用时从阿里云读取,这样可以保持证书文件不被泄露.
结尾
通过本指南,我们学习了如何利用 Python 和 FastAPI 结合 Google Analytics API 来获取网站的用户访问数据,包括独立访客数 (UV) 和页面浏览量 (PV)。使用 Python 的 Google API 客户端库,我们可以高效地与 Google Analytics 进行交互,而 FastAPI 的异步特性则确保了 API 调用的高性能和响应速度。
实现这些功能后,您可以将其集成到更复杂的系统中,例如实时数据分析平台或自动报告生成工具,为决策提供宝贵的数据支持。借助 Python 和 FastAPI,您不仅能快速获取和处理数据,还能构建一个可扩展、可靠的服务架构。希望本指南为您的项目提供了有价值的参考,帮助您更好地利用 Google Analytics 数据来优化您的业务和网站性能。
评论区