看到一篇有意思的博客 利用微信開放的接口itchat 能夠獲取登陸的微信好友信息 而且利用圖像工具顯示分析結果 很是的有意思 記錄下實現過程 並提供可執行代碼json
首先要 import itchat 庫 這個是微信開源的一個接口 用於登陸微信而且查看帳戶裏好友信息服務的windows
2種導入方法 均可以快速下載庫微信
1.在cmd裏能夠直接 pip3 install itchat 2.在pycharm中能夠依次 File-->Settings-->Project xxx項目-->Project Interpreter --> + --> 搜索裏面輸入itchat --> install Package併發
若是還不知道怎麼導庫 百度搜 確定能夠解決app
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------dom
一.能夠利用itchat獲取好友的男女比例,好友的地域分佈 上代碼iphone
裏面須要import 3個包 (itchat,pandas,matplotlib)用上面講過的相同方法下載庫函數
顯示效果爲 工具
1 import itchat 2 3 #生成一個驗證碼 4 itchat.login() 5 itchat.auto_login(enableCmdQR=True) 6 #獲取好友信息 7 friends=itchat.get_friends(update=True) 8 9 #查看男女的比例 10 male=1 11 female=0 12 other=0 13 #friends=[0]是本身 全部咱們要從[1:] 14 for i in friends[1:]: 15 print(i) 16 sex =i['Sex'] #1是男性 2女性 17 if(sex==1): 18 male+=1 19 elif(sex==2): 20 female+=1 21 else: 22 other+=1 23 total =len(friends[1:]) 24 print('好友總人數:',total) 25 print('男性比例:%2f%%'%(float(male)/total*100)) 26 print('女性比例:%2f%%'%(float(female)/total*100)) 27 print('未知比例:%2f%%'%(float(other)/total*100)) 28 29 #繪製圖形 --》統計圖 30 arr=['1']*male #男性 31 arr1=['2']*female #女性 32 arr2=['0']*other #未知 33 34 #吧數據組合一塊兒 數據可視化 35 arr.extend(arr1) 36 arr.extend(arr2) 37 38 import matplotlib.pyplot as plt 39 #將數據轉化爲一維數據 40 41 plt.hist(arr) 42 plt.show() 43 #獲取全部數據 44 #暱稱 ,性別,省份 ,城市,個性簽名 45 import pandas as pd 46 47 data =pd.DataFrame() 48 colums =['NickName','Sex','Province','City','Signature'] 49 for col in colums: 50 val =[] 51 #獲得好友 52 for r in friends[1:]: 53 val.append(r[col]) 54 data[col] =pd.Series(val) 55 #城市的分佈 56 #繪製柱狀型 57 #設置字體 58 plt.rcParams['font.sans-serif']=['SimHei'] 59 plt.bar(data['Province'].value_counts().index,data['Province'].value_counts()) 60 plt.xticks(rotation='90') #圖片旋轉90度 61 plt.show() 62 #查看浙江好友分佈狀況 63 gd= data[data['Province']== '浙江']['City'] 64 plt.bar(gd.value_counts().index,gd.value_counts()) 65 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盤下 有你生成的文件
1 import itchat 2 import re 3 4 # 先登陸,掃二維碼登陸微信 5 itchat.login() 6 # 獲取好友列表,返回的是json信息 7 friends = itchat.get_friends(update=True)[0:] 8 # 打印好友列表信息 9 # print(friends) 10 tList = [] 11 for i in friends: 12 # 獲取個性簽名,替換掉span,class,emoji 13 signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "") 14 # 正則匹配過濾掉emoji表情,例如emoji1f3c3等 15 rep = re.compile("1f\d.+") 16 signature = rep.sub("", signature) 17 tList.append(signature) 18 19 # 拼接字符串 20 text = "".join(tList) 21 22 # jieba分詞 23 import jieba 24 25 wordlist_jieba = jieba.cut(text, cut_all=True) 26 wl_space_split = " ".join(wordlist_jieba) 27 28 # wordcloud詞雲 29 import matplotlib.pyplot as plt 30 from wordcloud import WordCloud, ImageColorGenerator 31 import os 32 import numpy as np 33 import PIL.Image as Image 34 35 # d = os.path.dirname(__file__) 36 # 找一張微信logo圖來生成配色方案,微信logo圖wechat.jpg路徑在F:\\盤下 37 alice_coloring = np.array(Image.open(os.path.join(r'C:\Users\Administrator\Desktop', 'iphone.jpg'))) 38 # 這裏要選擇字體存放路徑,win的字體在C:/windows/Fonts中 39 """#my_wordcloud = WordCloud().generate(wl_space_split) 默認構造函數 40 my_wordcloud = WordCloud( 41 background_color='white', # 設置背景顏色 42 mask = abel_mask, # 設置背景圖片 43 max_words = 200, # 設置最大顯示的字數 44 stopwords = STOPWORDS, # 設置停用詞 45 font_path = C:/Users/Windows/fonts/simkai.ttf', # 設置字體格式,如不設置顯示不了中文 46 max_font_size = 50, # 設置字體最大值 47 random_state = 30, # 設置有多少種隨機生成狀態,即有多少種配色方案 48 scale=.5 49 ).generate(wl_space_split)""" 50 my_wordcloud = WordCloud(background_color="white", max_words=2000, mask=alice_coloring, 51 max_font_size=40, random_state=42, 52 font_path='C:/Windows/Fonts/simhei.ttf') \ 53 .generate(wl_space_split) 54 55 image_colors = ImageColorGenerator(alice_coloring) 56 plt.imshow(my_wordcloud.recolor(color_func=image_colors)) 57 plt.imshow(my_wordcloud) 58 plt.axis("off") 59 plt.show() 60 61 # 保存圖片到F:\\盤下 併發送到手機裏的文件傳輸助手(filehelper)裏 62 my_wordcloud.to_file(os.path.join('F:\\', 'wechat_cloud.png')) 63 itchat.send_image("F:\\wechat_cloud.png", 'filehelper')