看到一篇有意思的博客 利用微信开放的接口itchat 可以获取登录的微信好友信息 并且利用图像工具显示分析结果 非常的有意思 记录下实现过程 并提供可执行代码

首先要 import itchat 库 这个是微信开源的一个接口 用于登录微信并且查看账户里好友信息服务的

2种导入方法 都可以快速下载库

1.在cmd里可以直接 pip3 install itchat     2.在pycharm中可以依次 File-->Settings-->Project xxx项目-->Project Interpreter --> + --> 搜索里面输入itchat --> install Package

如果还不知道怎么导库 百度搜 肯定可以解决

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一.可以利用itchat获取好友的男女比例,好友的地域分布  上代码

里面需要import 3个包 (itchat,pandas,matplotlib)用上面讲过的相同方法下载库

显示效果为             

 

 import itchat

 #生成一个验证码
itchat.login()
itchat.auto_login(enableCmdQR=True)
#获取好友信息
friends=itchat.get_friends(update=True) #查看男女的比例
male=1
female=0
other=0
#friends=[0]是自己 所有我们要从[1:]
for i in friends[1:]:
print(i)
sex =i['Sex'] #1是男性 2女性
if(sex==1):
male+=1
elif(sex==2):
female+=1
else:
other+=1
total =len(friends[1:])
print('好友总人数:',total)
print('男性比例:%2f%%'%(float(male)/total*100))
print('女性比例:%2f%%'%(float(female)/total*100))
print('未知比例:%2f%%'%(float(other)/total*100)) #绘制图形 --》统计图
arr=['']*male #男性
arr1=['']*female #女性
arr2=['']*other #未知 #吧数据组合一起 数据可视化
arr.extend(arr1)
arr.extend(arr2) import matplotlib.pyplot as plt
#将数据转化为一维数据 plt.hist(arr)
plt.show()
#获取所有数据
#昵称 ,性别,省份 ,城市,个性签名
import pandas as pd data =pd.DataFrame()
colums =['NickName','Sex','Province','City','Signature']
for col in colums:
val =[]
#得到好友
for r in friends[1:]:
val.append(r[col])
data[col] =pd.Series(val)
#城市的分布
#绘制柱状型
#设置字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.bar(data['Province'].value_counts().index,data['Province'].value_counts())
plt.xticks(rotation='') #图片旋转90度
plt.show()
#查看浙江好友分布情况
gd= data[data['Province']== '浙江']['City']
plt.bar(gd.value_counts().index,gd.value_counts())
plt.show()

二.可以根据获取的好友个性签名 制作词云 比如下图

 

上代码

由于这个用到的东西多一些 需要导入的包也 多一些 但是没关系 缺少哪个库就对应下载哪个库 下载库的方法都一样

说一下 需要更改的地方

1.第37行 alice_coloring = np.array(Image.open(os.path.join(r'C:\Users\Administrator\Desktop', 'iphone.jpg')))

C:\Users\Administrator\Desktop改为存放图片的路径    iphone.jpg改为你自己图片的名称

2.第62行 my_wordcloud.to_file(os.path.join('F:\\', 'wechat_cloud.png')) 作用是将生成图片放入指定文件夹中 你可以更改放到你想放的路径 改完之后 63行的路径也要改  当然如果偷懒的话 也可以不改 你会发现F盘下 有你生成的文件

 import itchat
import re # 先登录,扫二维码登录微信
itchat.login()
# 获取好友列表,返回的是json信息
friends = itchat.get_friends(update=True)[0:]
# 打印好友列表信息
# print(friends)
tList = []
for i in friends:
# 获取个性签名,替换掉span,class,emoji
signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")
# 正则匹配过滤掉emoji表情,例如emoji1f3c3等
rep = re.compile("1f\d.+")
signature = rep.sub("", signature)
tList.append(signature) # 拼接字符串
text = "".join(tList) # jieba分词
import jieba wordlist_jieba = jieba.cut(text, cut_all=True)
wl_space_split = " ".join(wordlist_jieba) # wordcloud词云
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import os
import numpy as np
import PIL.Image as Image # d = os.path.dirname(__file__)
# 找一张微信logo图来生成配色方案,微信logo图wechat.jpg路径在F:\\盘下
alice_coloring = np.array(Image.open(os.path.join(r'C:\Users\Administrator\Desktop', 'iphone.jpg')))
# 这里要选择字体存放路径,win的字体在C:/windows/Fonts中
"""#my_wordcloud = WordCloud().generate(wl_space_split) 默认构造函数
my_wordcloud = WordCloud(
background_color='white', # 设置背景颜色
mask = abel_mask, # 设置背景图片
max_words = 200, # 设置最大显示的字数
stopwords = STOPWORDS, # 设置停用词
font_path = C:/Users/Windows/fonts/simkai.ttf', # 设置字体格式,如不设置显示不了中文
max_font_size = 50, # 设置字体最大值
random_state = 30, # 设置有多少种随机生成状态,即有多少种配色方案
scale=.5
).generate(wl_space_split)"""
my_wordcloud = WordCloud(background_color="white", max_words=2000, mask=alice_coloring,
max_font_size=40, random_state=42,
font_path='C:/Windows/Fonts/simhei.ttf') \
.generate(wl_space_split) image_colors = ImageColorGenerator(alice_coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show() # 保存图片到F:\\盘下 并发送到手机里的文件传输助手(filehelper)里
my_wordcloud.to_file(os.path.join('F:\\', 'wechat_cloud.png'))
itchat.send_image("F:\\wechat_cloud.png", 'filehelper')

python爬取微信信息--显示性别/地域/词云(附代码)的更多相关文章

  1. python 爬取腾讯微博并生成词云

    本文以延参法师的腾讯微博为例进行爬取并分析 ,话不多说 直接附上源代码.其中有比较详细的注释. 需要用到的包有 BeautifulSoup WordCloud jieba # coding:utf-8 ...

  2. python爬取豆瓣流浪地球影评,生成词云

    代码很简单,一看就懂. (没有模拟点击,所以都是未展开的) 地址: https://movie.douban.com/subject/26266893/reviews?rating=&star ...

  3. python爬取微信小程序(实战篇)

    python爬取微信小程序(实战篇) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90452656 展开 一.背景介绍 近期有需求需要抓 ...

  4. Python爬取微信小程序(Charles)

    Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...

  5. Python爬取招聘信息,并且存储到MySQL数据库中

    前面一篇文章主要讲述,如何通过Python爬取招聘信息,且爬取的日期为前一天的,同时将爬取的内容保存到数据库中:这篇文章主要讲述如何将python文件压缩成exe可执行文件,供后面的操作. 这系列文章 ...

  6. python 爬取微信好友列表和个性签名,绘制个性签名云图

    python爬取微信好友列表和个性签名,绘制个性签名云图 1. 简要介绍 本次实验主要用到下面几个库 : 1)itchat---用于微信接口,实现生成QR码,用于微信扫描登陆 2)re(正则化)--- ...

  7. Python爬取网页信息

    Python爬取网页信息的步骤 以爬取英文名字网站(https://nameberry.com/)中每个名字的评论内容,包括英文名,用户名,评论的时间和评论的内容为例. 1.确认网址 在浏览器中输入初 ...

  8. 使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)

    前言 第一次写博客,主要内容是爬取微信公众号的文章,将文章以PDF格式保存在本地. 爬取微信公众号文章(使用wechatsogou) 1.安装 pip install wechatsogou --up ...

  9. itchat和matplotlib的结合使用爬取微信信息

    前几天无意中看到了一片文章,<一件有趣的事:我用 Python 爬了爬自己的微信朋友>,这篇文章写的是使用python中的itchat爬取微信中朋友的信息,其中信息包括,昵称.性别.地理位 ...

随机推荐

  1. apt与apt-get命令的区别与解释

    [apt与apt-get命令的区别与解释] Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt 命令的引入.其实早在 2014 年,apt 命令就已经发布了第一个稳定版,只是直到 20 ...

  2. Java学习笔记(二十一):类型转换和instanceof关键字

    基本数据类型转换: 自动类型转换:把大类型的数据赋值给大类型的变量(此时的大小指的是容量的范围) byte b = 12; //byte是一个字节 int i = b; //int是四个字节 强制类型 ...

  3. 正确理解c和c ++的复杂类型声明

    本文作者girlrong是网易广州社区的C语言版版主,这篇文章被选在精华区.很是不错,不敢独享!据说她乐于助人,虚心诚恳,颇受网友欢迎.只可惜现在已退隐江湖了.在最近学习C语言过程中,了解些前辈大牛的 ...

  4. Python开发【第八篇】:socket网络编程

    服务端: import socket server = socket.socket() #绑定要监听的端口 server.bind(('localhost',6969)) #监听 server.lis ...

  5. java得到当前日期的前一天或后一天

    public String getNextDay(String startdate) throws ParseException{ Date date = (new SimpleDateFormat( ...

  6. php 安装gzip

    https://jingyan.baidu.com/article/636f38bb3e538ad6b84610e6.html http://w3cgeek.com/configure-error-p ...

  7. Linux驱动之输入子系统简析

    输入子系统由驱动层.输入子系统核心.事件处理层三部分组成.一个输入事件,如鼠标移动.键盘按下等通过Driver->Inputcore->Event handler->userspac ...

  8. mybatis进阶--一对多查询

    首先,我们还是先给出一个需求:根据订单id查询订单明细——我们知道,一个订单里面可以有多个订单的明细(需求不明确的同学,请留言或者去淘宝网上的订单处点一下就知道了).这个时候,一个订单,对应多个订单的 ...

  9. Flink官方文档/介绍/教程/用例

    https://flink.apache.org/ 使用谷歌浏览器进入官网后,点击页面右键,使用谷歌翻译,翻译准确率很高: 常用部分:

  10. SpringMVC学习笔记:拦截器和过滤器

    首先说明一下二者的区别: 1. 拦截器基于java的反射机制,而过滤器是基于函数回调 2. 拦截器不依赖于servlet容器,过滤器依赖servlet容器 3. 拦截器只能对action请求起作用,而 ...