一、itchat
itchat是一個開源的微信個人號介面,這一次就用它來來玩玩。
在使用之前,先下載,老規矩通過 pip install itchat 即可安裝。
想要獲取朋友圈資訊,只需要幾行程式碼就可以獲取。為減少登入次數,將獲取到的資訊儲存到 json 檔案中即可。
itchat.login() # 通過二維碼連線登入賬號 friend_msg = itchat.get_friends(update=True)[0:] # 獲取微信好友資訊 # 將微信好友資訊儲存起來,減少登入的次數 with open('./friend_message.json', 'w', encoding='utf-8') as file: json.dump(friend_msg, file, ensure_ascii=False) file.close()
二、讀取檔案獲取資訊
我們只需要關注裡面其中的主要資訊,按照需求獲取。由於只是玩玩而已,就只單單獲取性別和城市資訊。
先獲取性別資訊
def get_gender(message): sex_dic = {} sex_list = [] for i in range(1, len(message)): sex = message[i]['Sex'] if sex == 1: sex_dic['Male'] = sex_dic.get('Male', 0) + 1 sex_list.append("男") elif sex == 2: sex_dic['Female'] = sex_dic.get('Female', 0) + 1 sex_list.append("女") else: sex_dic['Unknown'] = sex_dic.get('Unknown', 0) + 1 sex_list.append("Unknown") return sex_dic, sex_list
再獲取城市資訊
def get_city(message): city_list = [] for i in range(1, len(message)): city = message[i]['City'] if city == '': city_list.append(None) else: city_list.append(city) return city_list
三、視覺化
將性別繪製成餅狀圖,城市分佈繪製成柱狀圖。具體繪製的程式碼就不上了,詳情請前往 GitHub
with open("./friend_message.json", 'r', encoding='utf-8') as file: f_msg = json.load(file) file.close() sex_dic, sex_list = getData.get_gender(f_msg) city_list = getData.get_city(f_msg) # 將三個屬性組成 DataFrame data = pd.DataFrame({'gender': sex_list, 'city': city_list}) # 獲取城市前十的數量 city_dict = data['city'].value_counts()[:15].to_dict() # 繪製性別環狀圖 draw_pie(sex_dic) # 繪製城市柱狀圖 draw_bar(city_dict)
四、總結
說實話,這裡面的男生絕對大部分是在大學認識的,畢竟理工科學校可不是鬧著玩兒的;還有這 6.58% 不明性別的人不知道怎麼設定的,為什麼我沒辦法不設定,還是說......
作為一個在東莞上學的廣東汕頭人,這樣的分佈確實是在意料之中。畢竟汕頭是我生活了那麼久的地方,在東莞也快度過三個年頭了,不知不覺要大四了,最近的壓力已經逐漸增加了,無力吐槽。
這只是玩玩而已,如果你有什麼腦洞或者想要挖掘更多個人好友資訊,可以使用 itchat 接著玩。