10分钟用Python 获取微信好友地区、性别、签名信息并将结果可视化

它主要实现的功能是获取微信好友地区、性别、签名信息并将结果可视化

正文

根据itchat库获得好友信息

使用下面两行代码可以做到:

itchat.auto_login(hotReload=True)

friends = itchat.get_friends(update=True)

第一行代码是使用itchat库登录微信网页版,它会弹出扫码登录界面,设置参数 hotReload=True的目的是短时间内退出程序,再次登录可以不用扫码。

get_friends()返回的是一个list,里面有n个字典项,其中n等于你的微信好友数,由于list类型是可序列化的,我们可以使用json库把它保存到文件中

# 把json对象转成字符串并保存在本地
with open("data.json", "w", encoding="utf-8") as f:
    f.write(json.dumps(friends, indent=2, ensure_ascii=False))

其结果如下:

10分钟用Python 获取微信好友地区、性别、签名信息并将结果可视化_第1张图片

提取数据并可视化

性别信息可视化

使用下面的代码可以获得所有好友的性别信息

在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
for friend in friends:
            if friend["Sex"] == 0:
                unknow += 1
            elif friend["Sex"] == 1:
                male += 1
            else:
                female +=1

可视化的结果:

10分钟用Python 获取微信好友地区、性别、签名信息并将结果可视化_第2张图片

男同学占了大部分,女同学才占1/4,我果然是一个没有故事的男同学。

性别未知是没有设置性别的好友。

地区信息可视化

使用下面的代码可以获得所有好友的地区信息


dic_province = dict()
        for friend in self.friends:
            key = friend["Province"]
            if key not in dic_province.keys():
                dic_province[key] = 1
            else:
                dic_province[key] += 1
        key_list = []
        value_list = []
        for key,value in dic_province.items():
            if key == "":
                key = "其他地区"
            key_list.append(key)
            value_list.append(value)

可视化的结果是:

10分钟用Python 获取微信好友地区、性别、签名信息并将结果可视化_第3张图片

呃,好像暴露了我自己的地区。

签名信息可视化

使用下面的代码获得所有好友的个性签名

all_sign = ""
        for friend in self.friends:
            sign = friend["Signature"]
            if len(sign)>0:
                # 过滤表情,否则会对词云造成影响
                emoji = re.findall("",sign,re.S)
                if len(emoji) > 0:
                    sign = sign.replace(emoji[0],"")
                all_sign = all_sign + sign + "\n"
        if os.path.exists("wc/sign.txt"):
            os.remove("wc/sign.txt")
        with open("wc/sign.txt","a+",encoding="utf-8") as f:
            f.write(all_sign)

使用词云可视化的结果是

10分钟用Python 获取微信好友地区、性别、签名信息并将结果可视化_第4张图片

哈哈,也是一群积极向上,积极探讨人生的小伙伴们呢

如果你依然在编程的世界里迷茫,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的!交流经验!自己是一名高级python开发工程师,从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地

其他数据可视化

道理类似,不赘述了。

运行示意

运行项目根目录下的main.py文件,可以得到性别和地区可视化结果,如下图:

10分钟用Python 获取微信好友地区、性别、签名信息并将结果可视化_第5张图片

如果近期没有登录过,程序还会让你扫码登录的

如果需要可视化好友个性签名,则还需要运行项目根目录下wc文件夹下的wc.py文件,如下图:

10分钟用Python 获取微信好友地区、性别、签名信息并将结果可视化_第6张图片

这个词云是可以定制的,只要替换项目根目录下wc/image下的图片bc.png,就能修改词云的背景,注意最好是纯色背景的图。

你可能感兴趣的:(10分钟用Python 获取微信好友地区、性别、签名信息并将结果可视化)