微信公衆號數據分析。

既然提到了公衆號的數據分析,那必然少不了公衆號的數據。程序員


本次,以我一直關注的一個公衆號「曹將」爲例。算法


經過抓包軟件Charles獲取請求信息,得以獲取公衆號數據。json


本次只獲取公衆號文章的部分信息。微信


對於文章的閱讀量、點贊數、讚揚數。能力有限,選擇放棄。app



/ 01 / 獲取分析ide


公衆號的文章接口能夠在電腦版的微信上獲取。函數


圖片


進入歷史消息,下滑頁面。學習


圖片


在Charles中找到接口數據。ui


圖片


根據接口數據構造請求,便能獲取公衆號文章了!url



/ 02 / 數據獲取


主要是獲取文章的標題、摘要、連接及發佈時間。


具體代碼以下。


 
 

import requests
import json
import time


def parse(__biz, uin, key, pass_ticket, appmsg_token="", offset="0"):
    """
    文章信息獲取
    """

    url = '?txe_eliforp/pm/moc.qq.nixiew.pm//:sptth'[::-1]
    headers = {
        "User-Agent""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.901.400 QQBrowser/9.0.2524.400",
    }
    params = {
        "action""getmsg",
        "__biz": __biz,
        "f""json",
        "offset": str(offset),
        "count""10",
        "is_ok""1",
        "scene""124",
        "uin": uin,
        "key": key,
        "pass_ticket": pass_ticket,
        "wxtoken""",
        "appmsg_token": appmsg_token,
        "x5""0",
    }

    res = requests.get(url, headers=headers, params=params, timeout=3)
    data = json.loads(res.text)
    # 獲取信息列表
    msg_list = eval(data.get("general_msg_list")).get("list", [])
    for i in msg_list:
        # 去除文字連接
        try:
            # 文章標題
            title = i["app_msg_ext_info"]["title"].replace(','',')
            # 文章摘要
            digest = i["app_msg_ext_info"]["digest"].replace(','',')
            # 文章連接
            url = i["app_msg_ext_info"]["content_url"].replace("\\""").replace("http""https")
            # 文章發佈時間
            date = i["comm_msg_info"]["datetime"]
            print(title, digest, url, date)
            with open('article.csv''a'as f:
                f.write(title + ',' + digest + ',' + url + ',' + str(date) + '\n')
        except:
            pass
    # 判斷是否可繼續翻頁 1-能夠翻頁  0-到底了
    if 1 == data.get("can_msg_continue"0):
        time.sleep(3)
        parse(__biz, uin, key, pass_ticket, appmsg_token, data["next_offset"])
    else:
        print("爬取完畢")


if __name__ == '__main__':
    # 請求參數
    __biz = '你的參數'
    uin = '你的參數'
    key = '你的參數'
    pass_ticket = '你的參數'
    # 解析函數
    parse(__biz, uin, key, pass_ticket, appmsg_token="", offset="0")


最後成功獲取文章的信息。


圖片


接下來根據文章的標題、摘要及發佈時間來作一些分析。


文章連接主要是用於生成PDF。


這個放到下一篇文章再說。



/ 03 /  數據可視化


01 每一年發文數量


圖片


2016年數量最多,17年和18年降低趨勢明顯


這一點曹將也曾提過,工做變得愈來愈繁忙。


爲此,在18年的時候還招了幾個助理。


我確定是沒那實力去當小助理,仍是老老實實寫本身的代碼吧...


02 每個月發文數量


圖片


這裏是統計了全部年份的數據,下面還會有一個按年份來展現的圖表。


其中12月最多,不知是爲什麼。


難不成曹將每天寫年終總結報告的PPT教程嗎,哈哈。


03 每一年各月發文數量


圖片


能夠明顯看出15年和16年居於17年和18年之上。


這也與第一張圖相對應。


其中15年的12月份發佈了30篇文章,也就意味着曹將每天在寫文章。


三天一更的我,着實有點慚愧。


04 公衆號發文時間


圖片


發文時間主要集中在晚上,早上7點也有一段小高峯。


根據這一兩年的狀況,大多都在晚上發佈。


因此猜想7點發文,應該是前幾年的數據。


05 文章標題長度


圖片


標題對於文章的影響能夠說蠻大的。


這裏只研究一下曹將的文章標題長度,主要集中在10-20字之間。


也給本身往後寫文章標題做爲一個參考。


講真,曹將起的標題真不錯,值得學習。


06 標題和摘要詞雲圖


圖片

圖片


這裏便能看出曹將公衆號到底在講些什麼。


以前看過一篇分析曹將和邵雲蛟的文章。


裏面說曹將的文章偏職場,邵雲蛟則更偏向於PPT。


這話說的一點毛病也沒有。



/ 04 / 總結


本篇文章未完待續,完整代碼下期再見。


畢竟文章連接獲取了,那麼一定須要將其存到本地學習。


因此下一期講一下如何將網頁存爲PDF。


另外圈內的大佬,文章也很不錯,你們也能夠本身動手。


好比「程序員小灰」的漫畫,「五分鐘學算法」的趣味算法。


思路有了,剩下的就靠你們本身了。


萬水千山老是情,點個「在看」行不行。

相關文章
相關標籤/搜索