如何使用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
相关产品推荐
相关产品推荐

