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只能查自己的数据。最后我用了「开放平台代公众号调用」的方式,才把数据统一拉过来。

开放平台获取数据的流程大致如下:

  1. 用户在第三方平台授权(扫码或点击确认)
  2. 获取授权码(authorization_code)
  3. 用授权码换取接口调用凭据(authorizer_access_token)
  4. 用凭据调用数据接口

权限申请注意事项:

  • 数据分析权限需要提交「数据使用说明」,说明数据用途
  • 每个开放平台账号最多绑定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万次,看起来很多,但如果你要拉取多个公众号的数据,很容易超限。解决方案是「分时拉取」+「本地缓存」。

好了,数据采集这块就聊到这儿。下一章咱们讲数据清洗和预处理——你会发现,拉回来的数据往往不是直接能用的,得先「洗一洗」。