You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Google Analytics API获取特定页面浏览量并导出CSV文件

实现特定页面PV统计与CSV导出的调整方案

核心调整方向

现有代码当前按设备维度拆分PV和平均会话时长,无法关联页面路径数据,需从API请求参数、解析逻辑、导出能力三个层面对现有代码做改造,无需引入额外第三方依赖。

具体调整步骤

1. 修改API请求参数,匹配单页面统计需求

  • 将原维度从ga:deviceCategory替换为ga:pagePath,该维度会返回每一个被访问页面的完整路径
  • 新增维度筛选条件dimensionFilterClauses,锁定需要统计的特定页面路径,避免拉取全量页面的无效数据
  • 指标可根据需求调整:单页面统计场景下ga:avgSessionDuration业务意义较弱,可按需保留或删除,核心保留ga:pageviews指标
    调整后的请求体示例:
response = analytics.reports().batchGet(body={
    'reportRequests': [{
        'viewId': VIEW_ID,
        'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}],
        'metrics': [
            {"expression": "ga:pageviews"}
            # 若需要保留会话时长指标可在此加回{"expression": "ga:avgSessionDuration"}
        ],
        # 替换为页面路径维度,替代原设备分类维度
        "dimensions": [
            {"name": "ga:pagePath"}
        ],
        # 新增筛选规则,匹配需要统计的特定页面路径
        "dimensionFilterClauses": [{
            "filters": [{
                "dimensionName": "ga:pagePath",
                "operator": "EXACT",  # 需模糊匹配路径可改为PARTIAL
                "expressions": ["/your/target/page/path"]  # 替换为实际要统计的目标页面路径
            }]
        }]
    }]
}).execute()

2. 修正现有数据解析函数的无效逻辑

现有解析函数存在两处冗余/错误:

  • 函数外初始化的df = pd.DataFrame(columns=['Name', 'Age'])属于无关冗余代码,无实际作用,可直接删除
  • 函数内部完成行数据收集后,仅将收集到的字典列表赋值给变量,未转为结构化DataFrame就返回,会导致后续导出CSV时无法直接调用pandas接口
    修正后的解析函数:
def ga_response_dataframe(response):
    row_list = []
    # 遍历所有返回的报告
    for report in response.get('reports', []):
        # 读取列头配置
        column_header = report.get('columnHeader', {})
        dimension_headers = column_header.get('dimensions', [])
        metric_headers = column_header.get('metricHeader', {}).get('metricHeaderEntries', [])
        # 遍历每一行返回的数据
        for row in report.get('data', {}).get('rows', []):
            row_dict = {}
            dimensions = row.get('dimensions', [])
            date_range_values = row.get('metrics', [])
            # 写入维度值
            for header, dimension in zip(dimension_headers, dimensions):
                row_dict[header] = dimension
            # 写入指标值,按值类型自动转换为整数/浮点数
            for values in date_range_values:
                for metric, value in zip(metric_headers, values.get('values')):
                    if ',' in value or '.' in value:
                        row_dict[metric.get('name')] = float(value)
                    else:
                        row_dict[metric.get('name')] = int(value)
            row_list.append(row_dict)
    # 直接将收集的行数据转为结构化DataFrame返回
    return pd.DataFrame(row_list)

3. 新增CSV导出逻辑

解析得到结构化的DataFrame后,直接调用pandas内置的to_csv方法即可完成本地导出,无需额外处理:

df = ga_response_dataframe(response)
# 导出CSV,关闭行号列、使用utf-8-sig编码避免中文乱码
df.to_csv("target_page_pageviews.csv", index=False, encoding="utf-8-sig")

注意事项

  • 筛选规则的操作符可根据需求调整:EXACT为精确匹配完整路径,PARTIAL为模糊匹配包含指定字符串的所有路径
  • 导出CSV时使用utf-8-sig编码,可避免用Excel打开时出现中文路径、指标名的乱码问题
  • 若需要同时统计多个特定页面,可在dimensionFilterClauses的filters数组内增加多组匹配规则,实现多页面的合并统计

内容的提问来源于stack exchange,提问作者LukeNukem43

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 17:27:02