用Python数据分析来薅一下微信公众号
通过抓包软件Charles获取请求信息,得以获取公众号数据。
本次只获取公众号文章的部分信息。
对于文章的阅读量、点赞数、赞赏数。能力有限,选择放弃。
/ 01 / 获取分析
当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢? 学习Python中有不明白推荐加入交流群号:984137898 群里有志同道合的小伙伴,互帮互助, 群里有不错的视频学习教程和PDF!
公众号的文章接口可以在电脑版的微信上获取。
进入历史消息,下滑页面。
在Charles中找到接口数据。
根据接口数据构造请求,便能获取公众号文章了!
/ 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。
另外圈内的大佬,文章也很不错,大家也可以自己动手。
比如「程序员小灰」的漫画,「五分钟学算法」的趣味算法。
思路有了,剩下的就靠大家自己了。