Python探索微信朋友信息

发表于:2019-6-18 09:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Max_Lyu    来源:博客园

  一、itchat
  itchat是一个开源的微信个人号接口,这一次就用它来来玩玩。
  在使用之前,先下载,老规矩通过 pip install itchat 即可安装。
  想要获取朋友圈信息,只需要几行代码就可以获取。为减少登录次数,将获取到的信息保存到 json 文件中即可。
  itchat.login()      # 通过二维码连接登录账号
  friend_msg = itchat.get_friends(update=True)[0:]        # 获取微信好友信息
  # 将微信好友信息保存起来,减少登录的次数
  with open('./friend_message.json', 'w', encoding='utf-8') as file:
  json.dump(friend_msg, file, ensure_ascii=False)
  file.close()
   二、读取文件获取信息
  我们只需要关注里面其中的主要信息,按照需求获取。由于只是玩玩而已,就只单单获取性别和城市信息。
  先获取性别信息
   def get_gender(message):
  sex_dic = {}
  sex_list = []
  for i in range(1, len(message)):
  sex = message[i]['Sex']
  if sex == 1:
  sex_dic['Male'] = sex_dic.get('Male', 0) + 1
  sex_list.append("男")
  elif sex == 2:
  sex_dic['Female'] = sex_dic.get('Female', 0) + 1
  sex_list.append("女")
  else:
  sex_dic['Unknown'] = sex_dic.get('Unknown', 0) + 1
  sex_list.append("Unknown")
  return sex_dic, sex_list
   再获取城市信息
   def get_city(message):
  city_list = []
  for i in range(1, len(message)):
  city = message[i]['City']
  if city == '':
  city_list.append(None)
  else:
  city_list.append(city)
  return city_list
  三、可视化
  将性别绘制成饼状图,城市分布绘制成柱状图。具体绘制的代码就不上了,详情请前往 GitHub
   with open("./friend_message.json", 'r', encoding='utf-8') as file:
  f_msg = json.load(file)
  file.close()
  sex_dic, sex_list = getData.get_gender(f_msg)
  city_list = getData.get_city(f_msg)
  # 将三个属性组成 DataFrame
  data = pd.DataFrame({'gender': sex_list, 'city': city_list})
  # 获取城市前十的数量
  city_dict = data['city'].value_counts()[:15].to_dict()
  # 绘制性别环状图
  draw_pie(sex_dic)
  # 绘制城市柱状图
  draw_bar(city_dict)
   四、总结
  说实话,这里面的男生绝对大部分是在大学认识的,毕竟理工科学校可不是闹着玩儿的;还有这 6.58% 不明性别的人不知道怎么设置的,为什么我没办法不设置,还是说......
  作为一个在东莞上学的广东汕头人,这样的分布确实是在意料之中。毕竟汕头是我生活了那么久的地方,在东莞也快度过三个年头了,不知不觉要大四了,最近的压力已经逐渐增加了,无力吐槽。
  这只是玩玩而已,如果你有什么脑洞或者想要挖掘更多个人好友信息,可以使用 itchat 接着玩。

      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号