python 一键登录微信分析好友性别 地址 生成结果
# -*- coding:utf- -*- """
author:Mr Yang
data://
""" import itchat
import matplotlib.pyplot as plt
import matplotlib
import os
import re
import numpy as np
from PIL import Image
from wordcloud.wordcloud import WordCloud class WeiXinAnalyze():
def __init__(self):
self.sex_dict = {}
self.city_dict = {}
self.self_nickname = ''
self.wordList = []
self.save_path = 'result' def wx_login(self):
"""微信登录及数据统计方法"""
itchat.login()
data = itchat.get_friends(update=True)
self.self_nickname = data[]['NickName'] # 获取此微信昵称
for item in data:
sex = item.get('Sex') # 性别
province = item.get('Province') # 省份
city = item.get('City') # 城市
if sex or sex == :
if sex not in self.sex_dict:
self.sex_dict[sex] =
else:
self.sex_dict[sex] +=
if province and city:
address = '-'.join([province, city])
if address not in self.city_dict:
self.city_dict[address] =
else:
self.city_dict[address] += if item["Signature"]:
signature = re.sub(r'<span.*</span>', '', item["Signature"]).strip().replace('\n', '')
self.wordList.append(signature)
if not os.path.exists(self.save_path):
os.mkdir(self.save_path) def get_sex_info(self):
"""分析性别方法"""
sex_dict = {}
sex_dict['男'], sex_dict['女'], sex_dict['其它'] = self.sex_dict.pop(), self.sex_dict.pop(), self.sex_dict.pop()
# 数据准备
data = sex_dict.items()
labels = [i[] for i in data]
nums = [i[] for i in data]
# 使用Matplotlib画出饼图
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 使用指定的汉字字体类型(此处为黑体)
plt.title('微信好友性别统计({})'.format(self.self_nickname))
plt.pie(x=nums, labels=labels, autopct='%1.2f%%')
plt.savefig(os.path.join(self.save_path,'wx_sex_data.png')) def get_address_info(self):
"""分析地址方法"""
data = self.city_dict.items()
sort_data = sorted(data, key=lambda i: i[], reverse=True)[:]
x = [i[] for i in sort_data]
y = [i[] for i in sort_data]
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
fig, ax = plt.subplots()
rects = ax.barh(x, y, color='greenyellow', align="center")
ax.set_yticks(x) # 设置标度的位置
ax.set_yticklabels(x) # 设置纵坐标的每一个刻度的属性值
ax.invert_yaxis() # 反转标度值
ax.set_xlabel('人数(位)') # 设置横坐标的单位
ax.set_title('微信好友所在城市统计({})'.format(self.self_nickname)) # 设定图片的标题
for rect, y, num in zip(rects, x, y):
x = rect.get_width()
plt.text(x + 0.05, y, "%d" % int(num))
plt.savefig(os.path.join(self.save_path,'wx_address_data.png')) def wx_ciyun(self):
"""微信词云方法"""
text = " ".join(self.wordList)
# 获取当前文件的执行路径
src_dir = os.getcwd()
# 生成词云形状的图片地址
imagePath = os.path.join(src_dir , "timg.jpg")
# 生成词云字体地址(防止中文乱码)
font = os.path.join(src_dir ,"SimHei.ttf")
# 生成的词云图地址
resultPath = os.path.join(self.save_path,'wx_ciyun.png')
# 开始生成图片
bg = np.array(Image.open(imagePath))
wc = WordCloud(
mode='RGBA', # 设置透明底色
mask=bg, # 造型遮盖
background_color="white", # 背景颜色
max_font_size=, # 字体最大值
min_font_size=, # 字体最小值
max_words=, # 词云显示的最大词数
random_state=, # 设置有多少种随机生成状态,即有多少种配色方案
font_path=font, # 设置字体 ).generate(text)
wc.to_file(resultPath) if __name__ == '__main__':
weixin = WeiXinAnalyze()
weixin.wx_login()
weixin.get_sex_info()
weixin.get_address_info()
weixin.wx_ciyun()
最后看结果:



好累,第一次接触数据分析。
python 一键登录微信分析好友性别 地址 生成结果的更多相关文章
- 【python】itchat登录微信获取好友签名并生成词云
在知乎上看到一篇关于如何使用itchat统计微信好友男女比例并使用plt生成柱状图以及获取微信好友签名并生成词云的文章https://zhuanlan.zhihu.com/p/36361397,感觉挺 ...
- 10分钟教你用Python玩转微信之好友性别比例统计分析
01 前言+效果展示 想必,微信对于大家来说,是再熟悉不过的了.那么,大家想不想探索一下微信上的各种奥秘呢?今天,我们一起来简单分析一下微信上的好友性别比例吧~废话不多说,开始干活. 结果如下: 02 ...
- python爬取微信信息--显示性别/地域/词云(附代码)
看到一篇有意思的博客 利用微信开放的接口itchat 可以获取登录的微信好友信息 并且利用图像工具显示分析结果 非常的有意思 记录下实现过程 并提供可执行代码 首先要 import itchat 库 ...
- python之获取微信服务器的ip地址
# -*- coding: cp936 -*- #PYTHON 27 #xiaodeng #获取微信服务器的ip地址 import urllib url='https://api.weixin.qq. ...
- Java二维码登录流程实现(包含短地址生成,含部分代码)
近年来,二维码的使用越来越风生水起,笔者最近手头也遇到了一个需要使用二维码扫码登录网站的活,所以研究了一下这一套机制,并用代码实现了整个流程,接下来就和大家聊聊二维码登录及的那些事儿. 二维码原理 二 ...
- python一键电影搜索与下载
代码地址如下:http://www.demodashi.com/demo/14313.html python一键电影搜索与下载 概述 使用python搜索并爬取豆瓣电影信息,包括评分,主演,导演,类型 ...
- 利用 Python 分析微信好友性别和位置
今天用到一个非常有意思的库——itchat,它已经完成了 wechat 的个人账号API接口,使爬取个人微信信息更加方便. 下载 爬取微信好友信息 这样就将你所有微信好友的信息都返回了,我们并不需要 ...
- Python 实现获取微信好友信息
最近用闲余时间看了点python,在网上冲浪时发现有不少获取微信好友信息的博客,对此比较感兴趣,于是自己敲了敲顺便记录下来. 一.使用 wxpy 模块库获取好友男比例信息和城市分布. # -*- co ...
- 我用 Python 爬取微信好友,最后发现一个大秘密
前言 你身处的环境是什么样,你就会成为什么样的人.现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界.你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样.最近在 ...
随机推荐
- lockfree buffer test
性能测试(3): 对无锁队列boost::lockfree::queue和moodycamel::ConcurrentQueue做一个性能对比测试 版权声明:本文为博主zieckey原创文章, ...
- 使用 Itext 生成PDF字节数组(文件流不落地)
package com.ulic.gis.customerCenter.controller; import java.io.ByteArrayOutputStream; import java.io ...
- Python获取两个文件的交集、并集、差集
题记:朋友在处理数据时,需要解决这方面的问题,所以利用她给的代码,自己重新梳理了下,并成功运行. 代码如下: # coding:utf-8 s1 = set(open(r'C:\\Users\\yan ...
- Ubuntu16.04中安装VirtualBox及简单配置
sudo apt-get -y install virtualbox 注:将该图表拖到桌面上即可 往下的过程都不变..... 将左边的菜单栏移动到下面 打开一个终端输入:gsettings set c ...
- go 基础 处理异常
package main import "fmt" func main() { dosomething() } func dosomething(){ defer func() { ...
- [转] An In-Depth Look at the HBase Architecture - HBase架构深度剖析
[From] https://mapr.com/blog/in-depth-look-hbase-architecture/ In this blog post, I’ll give you an i ...
- Python基础知识(程序结构)
流程控制语句 选择语句.条件表达式.循环语句.跳转语句.pass空语句 程序结构三种基本结构 顺序结构.选择结构.循环结构 顺序结构 按照代码顺序依次运行 选择结构 根据条件表达式结果选择执行不同的语 ...
- 【DSP开发】【计算机视觉】TI 视觉软件开发套件ADAS
关键字:TI 视觉软件开发套件 ADAS 日前,德州仪器 (TI) 宣布推出其视觉软件开发套件(SDK),从而为开发人员提供了一款灵活的框架.一组丰富齐全的硬件设备驱动程序和一套适用的开发工具,可 ...
- 【DSP开发】【Linux开发】IIC设备驱动程序
IIC设备是一种通过IIC总线连接的设备,由于其简单性,被广泛引用于电子系统中.在现代电子系统中,有很多的IIC设备需要进行相互之间通信 IIC总线是由PHILIPS公司开发的两线式串行总线,用于连接 ...
- Java中对比单继承与多继承的优劣,以及java的解决方案
继承是一种面相对象的基本特征之一,但在具体语言的语法设计中有两种方式:单继承和多继承. 所谓多继承是指一个子类可以拥有多个父类:单继承则是一个子类只拥有一个父类. 单继承与多继承的优劣: 多继承优点在 ...