既然提到了公衆號的數據分析,那必然少不了公衆號的數據。程序員
本次,以我一直關注的一個公衆號「曹將」爲例。算法
經過抓包軟件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。
另外圈內的大佬,文章也很不錯,你們也能夠本身動手。
好比「程序員小灰」的漫畫,「五分鐘學算法」的趣味算法。
思路有了,剩下的就靠你們本身了。
萬水千山老是情,點個「在看」行不行。