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 爬取微信好友,最后发现一个大秘密
前言 你身处的环境是什么样,你就会成为什么样的人.现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界.你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样.最近在 ...
随机推荐
- 从输入url到页面加载完成都发生了什么
https://zhuanlan.zhihu.com/p/23155051 参考 一个http请求的过程 简要介绍一下一个http请求的网络传输过程: DNS Lookup先获得URL对应的IP地址( ...
- 小程序web-view利用url给内嵌的网页传值
这个方法跟网页上的一样,直接通过截取url中传过来的参数来取值 <web-view src="https://www.baidu.com/test.html?url=http://ww ...
- 浏览器缓存及vw和vh的使用
在浏览器缓存中不仅有 cookie 还有了别的选择 Storage 浏览器又分了两种缓存:sessionStorage localStorage localStorage 缓存:是一种永久的缓存,也就 ...
- leetcode-hard-array-41. First Missing Positive-NO
mycode class Solution(object): def firstMissingPositive(self, nums): """ :type nums: ...
- ccf 201612-3 权限查询
ccf 201612-3 权限查询 解题思路: 建立一个二维矩阵存储权限和角色 还差30分emmm #include<iostream> #include<cstring> ...
- Linux性能分析之上下文切换
而在每个任务运行前,CPU 都需要知道任务从哪里加载.又从哪里开始运行,也就是说,需要系统事先帮它设置好 CPU 寄存器和程序计数器 CPU 寄存器,是 CPU 内置的容量小.但速度极快的内存.而程序 ...
- 阶段3 3.SpringMVC·_07.SSM整合案例_03ssm整合之编写Spring框架
做整合要保证每个框架单独使用 先搭建Spring的框架,然后再整合别的框架.Spring是业务层的框架 spring的配置文件 这就表示是spring的配置文件 默认的约束不够,需要修改. <b ...
- Jmeter接口测试图文示例
Jmeter接口测试图文示例 以getObjectByCode接口为例,用jmeter2.13来进行接口测试. 测试前准备: 测试工具及版本:jmeter 2.13 r1665067(须包含__MD5 ...
- 从Windows系统到Linux系统转变的5大要点
当我在 Algoma (阿尔格玛)大学开始我现在的工作,一个图书系统管理员,我实在是对我的工作没有什么信心.尽管我在图书信息技术上有十年经验,对于我的第一个任务——协助开发和管理 Evergreen ...
- 行为验证码的asp.net MVC实现方式 qq521877626
界面http://localhost:你的服务器/Code/index 实现步骤: 注册账号https://www.geetest.com 新增验证 下载demo (url:http://docs ...