微信公众号数据分析。

既然提到了公众号的数据分析,那必然少不了公众号的数据。

本次,以我一直关注的一个公众号「曹将」为例。

通过抓包软件Charles获取请求信息,得以获取公众号数据。

本次只获取公众号文章的部分信息。

对于文章的阅读量、点赞数、赞赏数。能力有限,选择放弃。

/ 01 / 获取分析

公众号的文章接口可以在电脑版的微信上获取。

进入历史消息,下滑页面。

在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。

另外圈内的大佬,文章也很不错,大家也可以自己动手。

比如「程序员小灰」的漫画,「五分钟学算法」的趣味算法。

思路有了,剩下的就靠大家自己了。

原文发布于微信公众号 - 张俊红(zhangjunhong0428)

原文发表时间:2019-05-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券