(注:本文内容仅供学习)
在日常的生活中,微信是我们比较主要的社交与沟通工具,而微信的朋友圈也存储了我们多年的生活点滴与记忆。
但是,由于微信是一个手机端的APP应用,因此,我们无法像PC浏览网页一样,很方便的将发布在朋友圈里面的记录另存为到本地,只能每次都联网才能翻阅;并且,官方也没有推出类似的微信数据导出的功能,因此并没有办法将自己的微信数据另存下来,以便随时翻阅。
总结一下,当前的微信朋友圈的功能还有以下的不足:
微信数据无法导出
微信数据无法搜索:比如,我2013年发布了某条朋友圈,我记得其中的几个关键字,但是我无法检索
对于较早的微信记录,查阅很困难:比如,当前时间是2020年4月,我如果希望找2020年3月的数据,可能手机上翻几个屏幕就可以找到了;但是,如果我希望查阅2009年的数据呢?那我就要不停的上翻屏幕才可以看到,并且要是这个过程中退出了朋友圈的画面,那就要从头开始上翻了,... 非常麻烦
微信的数据无法统计:现在过年的时候,类似支付宝或者抖音这样的APP都会推出年度使用报告,但是微信的朋友圈并没有类似的统计数据的图表;因此,你无法知道过去一年中,你的朋友圈中,你个人的朋友圈发布频率,哪位朋友对你的发布的朋友圈的点赞是最多的,哪位朋友对你的评论是最多的,... 等等
介于以上原因,通过Python编写一个对朋友圈数据保存与分析,并且自动生成统计报表的程序,就有了需求。
01
涉及到的Python模块与知识点
编写这样的脚本,你需要以下的前提条件:
Android SDK
Appium
Python 3.x
Python模块:
appium
selenium
ppadb
pymysql
collections
matplotlib
pyecharts
其中:
Android SDK,提供了PC访问安卓手机的ADB通道;
Appium,为模拟人为操作手机的动作提供了可能;
Python,可以组织我们爬取与分析朋友圈的逻辑与动作;
02
Python 数据备份脚本
数据备份脚本源码发布在:
https://gitee.com/leviathan-litan/Discovery_WeChat_Moments
该脚本需要修改四个地方的变量:
device_serial = "你的设备序列号"self.wechat_account_name = "你的微信账号"self.wechat_account_password = "你的微信密码"self.path_wechat_pc_root = "D:/android_download/"run_wechat.wechat_moment(someone_name="你要爬取的朋友圈微信")
说明:
1. 设备序列号:
首先,将你的安卓手机通过数据线插在PC上;
然后,打开安卓手机的【USB调试】或【安全USB调试】功能;
最后,通过以下命令获取:
adb devices
2. 朋友圈数据在PC上的存放路径通过参数:【self.path_wechat_pc_root】控制;
运行脚本前的说明:
运行脚本前:
打开ADB的【Server】:
命令行(CMD)运行:adb start-server
打开Appium:
命令行(CMD)运行:appium
确保手机剩余空间足够:
如果你的朋友圈中的发布的记录中的图片或者视频较多,那么你需要确保手机剩余空间的足够;
因为,我的脚本首先需要将你的视频与图片保存在手机端本地,然后再通过【adb pull】发送到PC端;因此,手机端的空间必须足够;
比如,我的朋友圈数据较多,而且图片与视频较多,所以,我运行脚本前,需要保证手机端有【8G】的剩余空间;
在该脚本运行完成后,你会看到你指定的保存目录下的状态是这样的:

大小:

03
在MySQL数据库中创建对应的表
在继续分析上面保存的数据之前,首先要在MySQL数据库创建对应的表,用于存放【分析脚本】分析的结果;
创建脚本:
https://gitee.com/leviathan-litan/Analyze_Wechat_Data/blob/master/MySQL_create_tables.sql
其中涉及两张表:
wechat_records
wechat_record_detail_pingluns
wechat_records表,存放了某条朋友圈的总体信息,包括:
是否有文字部分
包含了多少张图片
包含了多少个视频
包含了多少点赞
包含了多少评论
某条记录的发布时间
wechat_record_detail_pingluns表则是某条朋友圈记录的评论详情,包括:
哪一条朋友圈记录?关联wechat_records表的records_id
这一条朋友圈记录的评论中有谁?
这些发表了评论的人,分别针对这一条记录发表了几条评论
当后面,跑完了分析脚本后,这一部分的表的状态是这样的:
wechat_records:

wechat_record_detail_pingluns:

04
脚本:分析保存的数据
分析脚本:
https://gitee.com/leviathan-litan/Analyze_Wechat_Data/blob/master/Analyze_WeChat_Data.py
该脚本需要修改这几个部分的变量:
self.MySQL_connect_address = "数据库连接地址"self.MySQL_connect_user = "数据库用户"self.MySQL_connect_password = "数据库口令"self.MySQL_connect_database = "默认连接schema"self.storage_base_directory = "你下载的微信数据在哪里存放"self.wechat_author_nick_name = "你下载的微信数据的作者的昵称"
跑该脚本的前提条件是,存在之前【采集脚本】另存为本地的数据;
05
生成统计报表的脚本
生成统计报表脚本:
https://gitee.com/leviathan-litan/Analyze_Wechat_Data/blob/master/WeChat_Data_Echats.py
该脚本需要修改的变量:
self.MySQL_connect_address = "数据库地址"self.MySQL_connect_user = "用户名"self.MySQL_connect_password = "密码"self.MySQL_connect_database = "默认Schema"object_page.render("wechat_finally_Page_render.html")
最后的【render】,指定的是你统计报表生成出来的文件名称;
而切面的数据库的连接信息,需要与上一阶段,分析报表存放分析结果的数据库的连接信息一致;
最后,生成的统计报表如下:

图1

图2
06
终
至此,对朋友圈数据的统计,完成。




