作者: Python实用宝典
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
瞧 这是不是一个有声音、有画面的小爱心~
今天 我们采集情侣们之间的聊天日常
用此制作一份只属于你们的小浪漫!
微信的备份功能并不能直接给你导出文本格式,它导出来其实是一种叫sqlite的数据库。如果说用网上流传的方法提取文本数据,iOS则需要下载itunes备份整机,安卓则需要本机的root权限,无论是哪种都非常麻烦,在这里给大家介绍一种不需要整机备份和本机root权限,只导出和对象的聊天数据的方法。
那就是使用安卓模拟器导出,这样既能ios/安卓通用,又能够避免对本机造成不良影响,首先需要用电脑版的微信备份你和你对象的聊天记录。以windows系统为例:
-
下载夜神模拟器
-
在夜神模拟器中下载微信
-
使用windows客户端版的微信进行备份,如图左下角
- 点击备份聊天记录至电脑
- 手机端选择备份的对象
点击进入下方的选择聊天记录,然后选择和你对象的记录就可以啦
6. 导出完毕后打开模拟器,登录模拟器的微信
7. 登录成功后返回电脑版微信登录,打开备份与恢复,选择恢复聊天记录到手机
8. 勾选我们刚刚导出的聊天记录,并在手机上点击开始恢复
9. 打开夜神模拟器的root权限
10. 用模拟器的浏览器百度搜索RE文件管理器,下载(图一)安装后打开,会弹出对话框让你给予root权限,选择永久给予,打开RE文件管理器(图二),进入以下文件夹(图三), 这是应用存放数据的地方。
/data/data/com.tencent.mm/MicroMsg
然后进入一个由数字和字母组合而成的文件夹,如上 图三 的 4262333387ddefc95fee35aa68003cc5
- 找到该文件夹下的EnMicroMsg.db文件,将其复制到夜神模拟器的共享文件夹(图四)。共享文件夹的位置为 /mnt/shell/emulated/0/others ( 图五 ),现在访问windows的 C:\Users\你的用户名\Nox_share\OtherShare 获取该数据库文件( EnMicroMsg.db )
- 导出该数据库后,使用一款叫 sqlcipher 的软件读取数据
将该字符串进行MD5计算后的前七位便是该数据库的密码,如 “355757010761231 857456862” 实际上中间没有空格,然后放入MD5计算取前面七位数字,后续会详细介绍。
哇,真是“简单易懂”啊,没关系,接下来告诉大家IMEI和UIN怎么获得。
首先是IMEI,在模拟器右上角的系统设置 —— 属性设置里就可以找得到啦,如图所示。
现在我们获得了IMEI号,那UIN号呢?
同样地,用RE文件管理器打开这个文件
长按改文件,点击右上角的三个点—选择打开方式—文本浏览器,找到default_uin
,后面的数字就是了 !
得到这两串数字后,就可以开始计算密码啦,如果我的IMEI是355757010762041,Uin是857749862,那么合起来就是355757010762041857749862,将这串数字放入免费MD5在线计算
得到的数字的前七位就是我们的密码了,像这一串就是 6782538.
然后我们就可以进入我们的核心环节:使用 sqlcipher 导出聊天文本数据!
点击 File - open database - 选择我们刚刚的数据库文件,会弹出框框让你输入密码,我们输入刚刚得到的七位密码,就可以进入到数据库了,选择message表格,这就是你与你的对象的聊天记录!
我们可以将它导出成csv文件:File - export - table as csv.
接下来,我们将使用Python代码,将里面真正的聊天内容:content信息提取出来,如下所示。虽然这个软件也允许select,但是它select后不允许导出,非常不好用,因此还不如我们自己写一个:
import pandas
import csv, sqlite3
conn= sqlite3.connect(‘chat_log.db’)
新建数据库为 chat_log.db
df = pandas.read_csv(‘chat_logs.csv’, sep=“,”)
读取我们上一步提取出来的csv文件,这里要改成你自己的文件名
df.to_sql(‘my_chat’, conn, if_exists=‘append’, index=False)
存入my_chat表中
conn = sqlite3.connect(‘chat_log.db’)
连接数据库
cursor = conn.cursor()
获得游标
cursor.execute(‘select content from my_chat where length(content)<30’)
将content长度限定30以下,因为content中有时候会有微信发过来的东西
value=cursor.fetchall()
fetchall返回筛选结果
data=open(“聊天记录.txt”,‘w+’,encoding=‘utf-8’)
for i in value:
data.write(i[0]+‘\n’)
将筛选结果写入 聊天记录.txt
data.close()
cursor.close()
conn.close()
关闭连接
记得把csv文件的编码格式转换成utf-8哦,不然可能会运行不下去:
. 导入我们的聊天记录,并对每一行进行分词
聊天记录是一行一行的句子,我们需要使用分词工具把这一行行句子分解成由词语组成的数组,这时候我们就需要用到结巴分词了。
分词后我们还需要去除词语里一些语气词、标点符号等等(停用词),然后还要自定义一些词典,比如说你们之间恩恩爱爱的话,一般结巴分词是无法识别出来的,需要你自行定义,比如说:小傻瓜别感冒了,一般分词结果是
小/傻瓜/别/感冒/了
如果你把“小傻瓜”加入到自定义词典里(我们下面的例子里是mywords.txt),则分词结果则会是
小傻瓜/别/感冒/了
下面对我们的聊天记录进行分词:
import jieba
import codecs
def load_file_segment():
读取文本文件并分词
jieba.load_userdict(“mywords.txt”)
加载我们自己的词典
f = codecs.open(u"聊天记录.txt",‘r’,encoding=‘utf-8’)
打开文件
content = f.read()
读取文件到content中
f.close()
关闭文件
segment=[]
保存分词结果
segs=jieba.cut(content)
对整体进行分词
for seg in segs:
if len(seg) > 1 and seg != ‘\r\n’:
如果说分词得到的结果非单字,且不是换行符,则加入到数组中
segment.append(seg)
return segment
print(load_file_segment())
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!