最近,由於業務需求需要拉取微信公眾號上發布過的文章的閱讀人數,閱讀次數等數據,其中遇到一些問題,在此總結
注意點:
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) 即可(注意點)