2、数据采集基础:微信公众平台数据接口、小程序数据分析API、开放平台数据获取权限
做微信生态的数据分析,第一步就是搞定数据采集。
很多人一上来就问我:「数据从哪来?」其实微信官方给了我们好几条路。我个人的习惯是,先摸清楚每个接口能干什么,再根据业务场景选最合适的。今天咱们就把这三条路——公众平台、小程序、开放平台——彻底讲透。
2.1 微信公众平台数据接口
公众平台的数据接口,说白了就是给公众号用的。你想想看,一个运营公众号的人,最关心什么?用户增长、图文阅读、消息互动。这些数据,微信都通过接口开放出来了。
核心接口清单:
- 用户分析接口:获取用户增减数据、累计用户数
- 图文分析接口:阅读量、分享量、收藏量、原文页点击量
- 消息分析接口:消息发送人数、次数、分布时段
- 接口分析接口:调用次数、失败率、耗时分布
我记得刚入行那会儿,有个客户让我帮他拉公众号半年的阅读数据。我直接用接口一天一天地调,结果被限流了。后来才发现,微信的接口有调用频率限制——单个接口每天最多调用1万次。嗯,这里要注意,批量拉取数据时一定要做分页和缓存。
来看一个获取用户增减数据的示例:
// 获取用户增减数据(过去7天)
GET https://api.weixin.qq.com/datacube/getusersummary?access_token=ACCESS_TOKEN
// 请求体示例
{
"begin_date": "2024-01-01",
"end_date": "2024-01-07"
}
// 返回示例
{
"list": [
{
"ref_date": "2024-01-01",
"user_source": 0, // 0代表其他,1代表搜索,2代表名片...
"new_user": 120,
"cancel_user": 15
}
]
}
我的小技巧:接口返回的数据是按「用户来源」拆分的。如果你只想看总新增,记得自己汇总一下。我一般会在代码里写个聚合函数,省得每次手动加。
2.2 小程序数据分析API
小程序的数据接口,比公众号要丰富得多。为什么?因为小程序能采集到用户的行为路径、页面停留、转化漏斗。这些数据对产品优化太重要了。
我曾经帮一个电商小程序做数据分析,发现用户加购到支付的转化率只有12%。通过小程序的数据接口,我拉到了每个页面的退出率,最后定位到是结算页加载太慢。改完之后,转化率直接翻了一倍。
小程序的核心API包括:
| 接口名称 | 功能说明 | 调用频率 |
|---|---|---|
| getDailyRetain | 获取日留存数据 | 每日1万次 |
| getDailyVisitTrend | 获取日访问趋势 | 每日1万次 |
| getUserPortrait | 获取用户画像分布 | 每日1000次 |
| getVisitPage | 获取页面访问分布 | 每日1万次 |
举个例子,获取小程序的日访问趋势:
// 获取日访问趋势
GET https://api.weixin.qq.com/datacube/getdailyvisittrend?access_token=ACCESS_TOKEN
// 请求体
{
"begin_date": "2024-01-01",
"end_date": "2024-01-07"
}
// 返回示例
{
"list": [
{
"ref_date": "2024-01-01",
"session_cnt": 15230, // 打开次数
"visit_pv": 45678, // 访问次数
"visit_uv": 12345, // 访问人数
"stay_duration_uv": 120, // 人均停留时长(秒)
"visit_depth": 3.2 // 平均访问深度
}
]
}
避坑指南:我曾经遇到过一个问题——小程序的数据接口返回的「访问人数」和「打开次数」对不上。后来发现,同一个用户一天内多次打开,只算1个UV,但算多次Session。所以做留存分析时,一定要用UV口径,别用Session。
2.3 开放平台数据获取权限
开放平台,是给第三方开发者用的。说白了,如果你不是公众号或小程序的运营者,而是想帮别人做数据分析,那就得走开放平台。
开放平台的数据获取,核心在于「授权」。用户授权后,你才能拿到他的数据。权限分为几个级别:
- 基础权限:获取用户基本信息(昵称、头像、性别、地区)
- 高级权限:获取用户手机号、微信运动数据、发票信息等
- 数据分析权限:获取公众号/小程序的运营数据(需额外申请)
我记得有个项目,客户想做一个跨公众号的用户分析平台。我一开始以为只要拿到access_token就行,结果发现开放平台的接口权限是分开的——每个公众号的token只能查自己的数据。最后我用了「开放平台代公众号调用」的方式,才把数据统一拉过来。
开放平台获取数据的流程大致如下:
- 用户在第三方平台授权(扫码或点击确认)
- 获取授权码(authorization_code)
- 用授权码换取接口调用凭据(authorizer_access_token)
- 用凭据调用数据接口
权限申请注意事项:
- 数据分析权限需要提交「数据使用说明」,说明数据用途
- 每个开放平台账号最多绑定50个公众号/小程序
- 接口调用频率按「授权方」计算,不是按开放平台账号
来看一个获取授权方数据的示例:
// 获取授权方的用户增减数据
POST https://api.weixin.qq.com/datacube/getweanalysisappiddailyvisittrend?access_token=OPEN_ACCESS_TOKEN
// 请求体
{
"begin_date": "2024-01-01",
"end_date": "2024-01-07"
}
// 注意:这里的access_token是开放平台的token
// 不是公众号或小程序的token
我的建议:如果你做的是SaaS平台,建议把数据采集做成定时任务。每天凌晨拉取前一天的数据,存到自己的数据库里。这样既不会超限,也能保证数据完整。我现在的项目就是这么干的,跑了两年没出过问题。
2.4 数据采集的常见坑与解决方案
做数据采集这么多年,我踩过的坑真不少。挑几个典型的说说:
- Token过期:access_token有效期只有2小时,记得做自动刷新。我见过有人写死token,第二天全崩了。
- 数据延迟:微信的数据接口有T+1延迟,今天的数据明天才能拿到。别想着实时拉取,不现实。
- 字段变更:微信偶尔会调整接口返回的字段。我建议每次拉取数据后,做一次字段校验,发现异常及时报警。
- 频率限制:单个接口每天1万次,看起来很多,但如果你要拉取多个公众号的数据,很容易超限。解决方案是「分时拉取」+「本地缓存」。
好了,数据采集这块就聊到这儿。下一章咱们讲数据清洗和预处理——你会发现,拉回来的数据往往不是直接能用的,得先「洗一洗」。