最近,由于业务需求需要拉取微信公众号上发布过的文章的阅读人数,阅读次数等数据,其中遇到一些问题,在此总结
注意点:
1、接口侧的公众号数据的数据库中仅存储了2014年12月1日之后的数据,将查询不到在此之前的日期,即使有查到,也是不可信的脏数据; 2、请开发者在调用接口获取数据后,将数据保存在自身数据库中,即加快下次用户的访问速度,也降低了微信侧接口调用的不必要损耗。 3、额外注意,获取图文群发每日数据接口的结果中,只有中间页阅读人数+原文页阅读人数+分享转发人数+分享转发次数+收藏次数 >=3的结果才会得到统计,过小的阅读量的图文消息无法统计。
接口:
接口名称 | 最大时间跨度 | 接口调用地址(必须使用https) |
---|---|---|
获取图文群发每日数据(getarticlesummary) | 1 | https://api.weixin.qq.com/datacube/getarticlesummary?access_token=ACCESS_TOKEN |
获取图文群发总数据(getarticletotal) | 1 | https://api.weixin.qq.com/datacube/getarticletotal?access_token=ACCESS_TOKEN |
获取图文统计数据(getuserread) | 3 | https://api.weixin.qq.com/datacube/getuserread?access_token=ACCESS_TOKEN |
获取图文统计分时数据(getuserreadhour) | 1 | https://api.weixin.qq.com/datacube/getuserreadhour?access_token=ACCESS_TOKEN |
获取图文分享转发数据(getusershare) | 7 | https://api.weixin.qq.com/datacube/getusershare?access_token=ACCESS_TOKEN |
获取图文分享转发分时数据(getusersharehour) | 1 | https://api.weixin.qq.com/datacube/getusersharehour?access_token=ACCESS_TOKEN |
我们使用的是获取图文群发总数据进行数据的拉取. 最大时间跨度是指一次接口调用时最大可获取数据的时间范围,如最大时间跨度为7是指最多一次性获取7天的数据
确定的点:
1、前者获取的是某天所有被阅读过的文章(仅包括群发的文章)在当天的阅读次数等数据。 2、后者获取的是,某天群发的文章,从群发日起到接口调用日(但最多统计发表日后7天数据),每天的到当天的总等数据。例如某篇文章是12月1日发出的,发出后在1日、2日、3日的阅读次数分别为1万,则getarticletotal获取到的数据为,距发出到12月1日24时的总阅读量为1万,距发出到12月2日24时的总阅读量为2万,距发出到12月1日24时的总阅读量为3万。
注意: 它的数据是一种递增的趋势,并不是每天的数据,也不是从后台看到的每日明细中的数据
事例:
Array ( [list] => Array ( [0] => Array ( [ref_date] => 2017-02-07 [msgid] => 2649708939_1 [title] => 这些西南新美宿将成为你今年再次出发的理由! [user_source] => 0 [details] => Array ( [0] => Array ( [stat_date] => 2017-02-07 [target_user] => 44994 [int_page_read_user] => 1769 [int_page_read_count] => 2012 [ori_page_read_user] => 0 [ori_page_read_count] => 0 [share_user] => 117 [share_count] => 142 [add_to_fav_user] => 144 [add_to_fav_count] => 147 [int_page_from_session_read_user] => 1098 [int_page_from_session_read_count] => 1201 [int_page_from_hist_msg_read_user] => 1 [int_page_from_hist_msg_read_count] => 1 [int_page_from_feed_read_user] => 586 [int_page_from_feed_read_count] => 667 [int_page_from_friends_read_user] => 102 [int_page_from_friends_read_count] => 126 [int_page_from_other_read_user] => 5 [int_page_from_other_read_count] => 17 [feed_share_from_session_user] => 17 [feed_share_from_session_cnt] => 17 [feed_share_from_feed_user] => 14 [feed_share_from_feed_cnt] => 14 [feed_share_from_other_user] => 7 [feed_share_from_other_cnt] => 7 ) [1] => Array ( [stat_date] => 2017-02-08 [target_user] => 44994 [int_page_read_user] => 3350 [int_page_read_count] => 3904 [ori_page_read_user] => 0 [ori_page_read_count] => 0 [share_user] => 214 [share_count] => 265 [add_to_fav_user] => 243 [add_to_fav_count] => 247 [int_page_from_session_read_user] => 1669 [int_page_from_session_read_count] => 1868 [int_page_from_hist_msg_read_user] => 5 [int_page_from_hist_msg_read_count] => 5 [int_page_from_feed_read_user] => 1422 [int_page_from_feed_read_count] => 1639 [int_page_from_friends_read_user] => 280 [int_page_from_friends_read_count] => 352 [int_page_from_other_read_user] => 21 [int_page_from_other_read_count] => 40 [feed_share_from_session_user] => 23 [feed_share_from_session_cnt] => 23 [feed_share_from_feed_user] => 35 [feed_share_from_feed_cnt] => 37 [feed_share_from_other_user] => 10 [feed_share_from_other_cnt] => 10 ) [2] => Array ( [stat_date] => 2017-02-09 [target_user] => 44994 [int_page_read_user] => 3680 [int_page_read_count] => 4333 [ori_page_read_user] => 0 [ori_page_read_count] => 0 [share_user] => 235 [share_count] => 292 [add_to_fav_user] => 269 [add_to_fav_count] => 273 [int_page_from_session_read_user] => 1801 [int_page_from_session_read_count] => 2032 [int_page_from_hist_msg_read_user] => 6 [int_page_from_hist_msg_read_count] => 6 [int_page_from_feed_read_user] => 1569 [int_page_from_feed_read_count] => 1821 [int_page_from_friends_read_user] => 326 [int_page_from_friends_read_count] => 418 [int_page_from_other_read_user] => 35 [int_page_from_other_read_count] => 56 [feed_share_from_session_user] => 23 [feed_share_from_session_cnt] => 23 [feed_share_from_feed_user] => 38 [feed_share_from_feed_cnt] => 40 [feed_share_from_other_user] => 11 [feed_share_from_other_cnt] => 11 ) [3] => Array ( [stat_date] => 2017-02-10 [target_user] => 44994 [int_page_read_user] => 3824 [int_page_read_count] => 4536 [ori_page_read_user] => 0 [ori_page_read_count] => 0 [share_user] => 250 [share_count] => 311 [add_to_fav_user] => 272 [add_to_fav_count] => 276 [int_page_from_session_read_user] => 1898 [int_page_from_session_read_count] => 2148 [int_page_from_hist_msg_read_user] => 9 [int_page_from_hist_msg_read_count] => 9 [int_page_from_feed_read_user] => 1586 [int_page_from_feed_read_count] => 1844 [int_page_from_friends_read_user] => 350 [int_page_from_friends_read_count] => 466 [int_page_from_other_read_user] => 44 [int_page_from_other_read_count] => 69 [feed_share_from_session_user] => 24 [feed_share_from_session_cnt] => 24 [feed_share_from_feed_user] => 39 [feed_share_from_feed_cnt] => 41 [feed_share_from_other_user] => 12 [feed_share_from_other_cnt] => 12 ) [4] => Array ( [stat_date] => 2017-02-11 [target_user] => 44994 [int_page_read_user] => 3874 [int_page_read_count] => 4606 [ori_page_read_user] => 0 [ori_page_read_count] => 0 [share_user] => 254 [share_count] => 315 [add_to_fav_user] => 276 [add_to_fav_count] => 280 [int_page_from_session_read_user] => 1935 [int_page_from_session_read_count] => 2196 [int_page_from_hist_msg_read_user] => 10 [int_page_from_hist_msg_read_count] => 10 [int_page_from_feed_read_user] => 1592 [int_page_from_feed_read_count] => 1856 [int_page_from_friends_read_user] => 356 [int_page_from_friends_read_count] => 473 [int_page_from_other_read_user] => 46 [int_page_from_other_read_count] => 71 [feed_share_from_session_user] => 24 [feed_share_from_session_cnt] => 24 [feed_share_from_feed_user] => 39 [feed_share_from_feed_cnt] => 41 [feed_share_from_other_user] => 12 [feed_share_from_other_cnt] => 12 ) [5] => Array ( [stat_date] => 2017-02-12 [target_user] => 44994 [int_page_read_user] => 3928 [int_page_read_count] => 4677 [ori_page_read_user] => 0 [ori_page_read_count] => 0 [share_user] => 257 [share_count] => 318 [add_to_fav_user] => 279 [add_to_fav_count] => 283 [int_page_from_session_read_user] => 1979 [int_page_from_session_read_count] => 2247 [int_page_from_hist_msg_read_user] => 12 [int_page_from_hist_msg_read_count] => 12 [int_page_from_feed_read_user] => 1594 [int_page_from_feed_read_count] => 1859 [int_page_from_friends_read_user] => 359 [int_page_from_friends_read_count] => 483 [int_page_from_other_read_user] => 50 [int_page_from_other_read_count] => 76 [feed_share_from_session_user] => 24 [feed_share_from_session_cnt] => 24 [feed_share_from_feed_user] => 39 [feed_share_from_feed_cnt] => 41 [feed_share_from_other_user] => 12 [feed_share_from_other_cnt] => 12 ) [6] => Array ( [stat_date] => 2017-02-13 [target_user] => 44994 [int_page_read_user] => 3981 [int_page_read_count] => 4753 [ori_page_read_user] => 0 [ori_page_read_count] => 0 [share_user] => 260 [share_count] => 322 [add_to_fav_user] => 281 [add_to_fav_count] => 285 [int_page_from_session_read_user] => 2003 [int_page_from_session_read_count] => 2281 [int_page_from_hist_msg_read_user] => 12 [int_page_from_hist_msg_read_count] => 12 [int_page_from_feed_read_user] => 1603 [int_page_from_feed_read_count] => 1872 [int_page_from_friends_read_user] => 362 [int_page_from_friends_read_count] => 487 [int_page_from_other_read_user] => 69 [int_page_from_other_read_count] => 101 [feed_share_from_session_user] => 25 [feed_share_from_session_cnt] => 25 [feed_share_from_feed_user] => 39 [feed_share_from_feed_cnt] => 41 [feed_share_from_other_user] => 12 [feed_share_from_other_cnt] => 12 ) ) ) ) )
详细参数介绍:
参数 | 说明 |
---|---|
ref_date | 数据的日期,需在begin_date和end_date之间 |
ref_hour | 数据的小时,包括从000到2300,分别代表的是[000,100)到[2300,2400),即每日的第1小时和最后1小时 |
stat_date | 统计的日期,在getarticletotal接口中,ref_date指的是文章群发出日期, 而stat_date是数据统计日期 |
msgid | 请注意:这里的msgid实际上是由msgid(图文消息id,这也就是群发接口调用后返回的msg_data_id)和index(消息次序索引)组成, 例如12003_3, 其中12003是msgid,即一次群发的消息的id; 3为index,假设该次群发的图文消息共5个文章(因为可能为多图文),3表示5个中的第3个 |
title | 图文消息的标题 |
int_page_read_user | 图文页(点击群发图文卡片进入的页面)的阅读人数 |
int_page_read_count | 图文页的阅读次数 |
ori_page_read_user | 原文页(点击图文页“阅读原文”进入的页面)的阅读人数,无原文页时此处数据为0 |
ori_page_read_count | 原文页的阅读次数 |
share_scene | 分享的场景
1代表好友转发 2代表朋友圈 3代表腾讯微博 255代表其他 |
share_user | 分享的人数 |
share_count | 分享的次数 |
add_to_fav_user | 收藏的人数 |
add_to_fav_count | 收藏的次数 |
获取图文群发总数据接口中的详细字段解释 |
intpagefromsessionreaduser 公众号会话阅读人数 |
target_user | 送达人数,一般约等于总粉丝数(需排除黑名单或其他异常情况下无法收到消息的粉丝) |
user_source | 在获取图文阅读分时数据时才有该字段,代表用户从哪里进入来阅读该图文。0:会话;1.好友;2.朋友圈;3.腾讯微博;4.历史消息页;5.其他 |
遇到的问题:
一 . 拉取指定日期的数据只获取最后一天的details中的数据即可(注意点)
二 . 在大量拉取数据的时候,会出现的问题
1)access_token频繁失效,大概的规律,拉取从2016-2-1到2018-8-29号的数据,总会出现在2017-7-6号左右就会出现
{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [eLHB306491504]"}
调用大概500次左右,有时候会出现调用大约200次的时候会出现这种情况
解决: 我们在循环调用的时候,每调用200次就进行一次access_token更新
三 。 微信的服务器并不稳定有时候会返回服务器错误
{"errcode":-1,"errmsg":"system error hint: [THb2Ua09081556]"}
解决: 加入重试机制,如果返回时微信系统错误,就重新进行调用,最多三次,如果还是发生错误就将错误的日期记录到一个日志文件中,方便统一拉取之后,如果有错误,可以重新拉取
四 。 为了方式循环调用接口出现的不可预测的问题,可以睡眠一下,usleep(500000) 即可(注意点)