如何利用python+Fastapi进行Google api调用-获取analytics的UV-PV信息

2024年9月13日
281 次阅读
admin

前言

在现代网络应用中,数据分析是评估网站性能和用户行为的关键工具,而 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.当设置完成后,需要将代码设置到你需要监控的页面中

image.png


如上图,我这个已经是设置完成的状态,当你初始化时,会给你提供一个新的代码,自己进行嵌入即可。例如VUE,我们可以直接嵌入到入口文件中,即index.html文件。需要等待大概24小时,数据就会更新到你的页面中。

3.Google API调用设置

我们来到Google 云平台首页,进入下面的页面中,在使用Google API之前,我们需要先启用对应的API权限。 image.png


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


image.png

4.Google API服务账户设置


image.png


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


image.png


5.服务账号对接你需要的服务

随后,我们来到GA4的首页,https://analytics.google.com/,我们需要将你刚刚生成的服务账号添加到这个GA4的账号管理页面中。 image.png 需要注意的是。这个里面的账号必须和你刚刚生成的一样,否则无法验证通过。

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 数据来优化您的业务和网站性能。

评论区

0 / 500
* 为必填项