Python 獲取好友資訊並將結果視覺化,製作詞雲圖
本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理
本文章來自騰訊雲 作者:Python進階者
想要學習Python?有問題得不到第一時間解決?來看看這裡“1039649593”滿足你的需求,資料都已經上傳至檔案中,可以自行下載!還有海量最新2020python學習資料。
點選檢視
序言
本篇部落格是itchat庫系列的第三篇文章,它主要實現的功能是獲取微信好友地區、性別、簽名信息並將結果視覺化
正文
根據itchat庫獲得好友資訊
使用下面兩行程式碼可以做到:
itchat.auto_login(hotReload=True) friends= itchat.get_friends(update=True)
第一行程式碼是使用itchat庫登入微信網頁版,它會彈出掃碼登入介面,設定引數 hotReload=True的目的是短時間內退出程式,再次登入可以不用掃碼。
get_friends()返回的是一個list,裡面有n個字典項,其中n等於你的微信好友數,由於list型別是可序列化的,我們可以使用json庫把它儲存到檔案中
# 把json物件轉成字串並儲存在本地with open("data.json", "w", encoding="utf-8") as f: f.write(json.dumps(friends, indent=2, ensure_ascii=False))
其結果如下:
提取資料並可視化
性別資訊視覺化
使用下面的程式碼可以獲得所有好友的性別資訊
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 + " " 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,就能修改詞雲的背景,注意最好是純色背景的圖。