序言
我以前在CSDN博客上分享過兩篇有關 itchat
庫的教程,json
本篇博客是itchat庫系列的第三篇文章,它主要實現的功能是獲取微信好友地區、性別、簽名信息並將結果可視化微信
正文
根據itchat庫得到好友信息
使用下面兩行代碼能夠作到:app
itchat.auto_login(hotReload=True)friends = itchat.get_friends(update=True)
機器學習
學習
第一行代碼是使用itchat庫登陸微信網頁版,它會彈出掃碼登陸界面,設置參數 hotReload=True
的目的是短期內退出程序,再次登陸能夠不用掃碼。spa
get_friends()返回的是一個list,裏面有n個字典項,其中n等於你的微信好友數,因爲list類型是可序列化的,咱們可使用json庫把它保存到文件中.net
# 把json對象轉成字符串並保存在本地with open("data.json", "w", encoding="utf-8") as f: f.write(json.dumps(friends, indent=2, ensure_ascii=False))
code
對象
blog
其結果以下:
提取數據並可視化
性別信息可視化
使用下面的代碼能夠得到全部好友的性別信息
for friend in friends: if friend["Sex"] == 0: unknow += 1 elif friend["Sex"] == 1: male += 1 else: female +=1
可視化的結果:
男同窗佔了大部分,女同窗才佔1/4,我果真是一個沒有故事的男同窗。
性別未知是沒有設置性別的好友。
地區信息可視化
使用下面的代碼能夠得到全部好友的地區信息
dic_province = dict() for friend in self.friends: key = friend["Province"] if key not in dic_province.keys(): dic_province[key] = 1 else: dic_province[key] += 1 key_list = [] value_list = [] for key,value in dic_province.items(): if key == "": key = "其餘地區" key_list.append(key) value_list.append(value)
可視化的結果是:
呃,好像暴露了我本身的地區。
簽名信息可視化
使用下面的代碼得到全部好友的個性簽名
all_sign = "" for friend in self.friends: sign = friend["Signature"] if len(sign)>0: # 過濾表情,不然會對詞雲形成影響 emoji = re.findall("<span class=.*></span>",sign,re.S) if len(emoji) > 0: sign = sign.replace(emoji[0],"") all_sign = all_sign + sign + "\n" if os.path.exists("wc/sign.txt"): os.remove("wc/sign.txt") with open("wc/sign.txt","a+",encoding="utf-8") as f: f.write(all_sign)
使用詞雲可視化的結果是
哈哈,也是一羣積極向上,積極探討人生的小夥伴們呢
其餘數據可視化
道理相似,不贅述了。
運行示意
運行項目根目錄下的main.py文件,能夠獲得性別和地區可視化結果,以下圖:
若是近期沒有登陸過,程序還會讓你掃碼登陸的
若是須要可視化好友個性簽名,則還須要運行項目根目錄下wc文件夾下的wc.py文件,以下圖:
這個詞雲是能夠定製的,只要替換項目根目錄下wc/image下的圖片bc.png,就能修改詞雲的背景,注意最好是純色背景的圖。
全部源代碼
關注微信公衆號: inspurer 回覆關鍵詞"微信好友"便可得到
有關環境配置的問題能夠加入qq羣: 861016679 一塊兒探討。
有關機器學習的實戰教程已經在籌備中了,敬請期待。
動動手指,點擊 好看 或者 轉發 ,謝謝了!
本文分享自微信公衆號 - 月小水長(inspurer)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。