根据 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))
其结果如下:
image
提取数据并可视化
性别信息可视化
使用下面的代码可以获得所有好友的性别信息
- for friend in friends:
- if friend["Sex"] == 0:
- unknow += 1
- elif friend["Sex"] == 1:
- male += 1
- else:
- female +=1
可视化的结果:
image
男同学占了大部分, 女同学才占 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)
可视化的结果是:
image
呃, 好像暴露了我自己的地区.
城市信息可视化
获取城市信息和地区类似,
- dic_city = dict()
- for friend in self.friends:
- key = friend["City"]
- if key not in dic_city.keys():
- dic_city[key] = 1
- else:
- dic_city[key] += 1
- data = []
- max_value = 0
- for key,value in dic_city.items():
- # 其他地区
- if len(key) == 0:
- continue
- # 过滤英文等非市级
- if len(key)>= 3:
- continue
- data.append(tuple((key,value)))
- if value> max_value:
- max_value = value
可视化效果如下:
image
长沙和衡阳的好友最多, 信息格式为: 城市 - 经度 - 纬度 - 人数
签名信息可视化
使用下面的代码获得所有好友的个性签名
- all_sign = ""
- for friend in self.friends:
- sign = friend["Signature"]
- if len(sign)>0:
- # 过滤表情, 否则会对词云造成影响
- emoji = re.findall("<span class=.*></span>",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)
使用词云可视化的结果是
image
哈哈, 也是一群积极向上, 积极探讨人生的小伙伴们呢
其他数据可视化
道理类似, 不赘述了.
运行示意
运行项目根目录下的 main.py 文件, 可以得到性别和地区可视化结果, 如下图:
image
如果近期没有登录过, 程序还会让你扫码登录的
如果需要可视化好友个性签名, 则还需要运行项目根目录下 wc 文件夹下的 wc.py 文件, 如下图:
image
这个词云是可以定制的, 只要替换项目根目录下 wc/image 下的图片 bc.PNG, 就能修改词云的背景, 注意最好是纯色背景的图.
小编最近整理了一套 Python 学习教程, 有需要的小伙伴, 记得来小编的交流群: 556370268, 即可免费领取一套 Python 学习教程, 需要项目源码的小伙伴也别忘了哦
来源: http://www.jianshu.com/p/3eb02d3c8911