python爬取微信信息--顯示性別/地域/詞雲(附代碼)


看到一篇有意思的博客 利用微信開放的接口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)用上面講過的相同方法下載庫

顯示效果為             

   

 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')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM