1. 程式人生 > 實用技巧 >Python 獲取好友資訊並將結果視覺化,製作詞雲圖

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,就能修改詞雲的背景,注意最好是純色背景的圖。