利用Python爬取朋友圈資料,爬到你開始懷疑人生
人生最難的事是自我認知,用Python爬取朋友圈資料,讓我們重新審視自己,審視我們周圍的圈子。
文:朱元祿(@資料分析-jacky)
哲學的兩大問題:1、我是誰?2、我們從哪裡來?
本文 jacky試圖用Python,資料化、聚類化我們的人格標籤,試圖回答"我是誰?"這個哲學問題。
(一)確定資料來源
自我認知,很難,必須它證。
物以類聚,人以群分。每個人的社交圈,家庭圈,朋友圈的屬性,基本我們人格的特徵屬性。我們所處的階級,在別人眼中的印象,在我們的朋友圈中都會得到印證。
朋友圈資料中最具人格屬性的因素是個性簽名,那麼下面我們就把所有好友的個性簽名作為我們的研究物件,以此出發爬取資料。
(二) 使用Python的itchat 包對好友的個性簽名資料進行分析
這裡我們用到Python一個比較冷門的庫——itchat,它很好的相容了wechat個人賬號的API介面,讓我們能更加便捷的爬取wechat資料,itchat的功能很強大,這裡我們僅用它爬取wechat中我們每個好友的個性簽名。
之後,我們要分析出自定義詞雲圖中個性簽名使用的高頻詞語是什麼。
最後,生成視覺化詞雲圖,直觀的給出洞察結果。
原始碼如下:
# coding:utf-8 import itchat import re itchat.login() friends = itchat.get_friends(update=True)[0:] tList = [] for i in friends: signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "") rep = re.compile("1f\d.+") signature = rep.sub("", signature) tList.append(signature) # 拼接字串 text = "".join(tList) # jieba分詞 import jieba wordlist_jieba = jieba.cut(text, cut_all=True) wl_space_split = " ".join(wordlist_jieba) # wordcloud詞雲 import matplotlib.pyplot as plt from wordcloud import WordCloud, ImageColorGenerator import os import numpy as np import PIL.Image as Image d= os.path.dirname(os.path.abspath( __file__ )) alice_coloring = np.array(Image.open(os.path.join(d, "wechat.jpg"))) my_wordcloud = WordCloud(background_color="white", max_words=2000,mask=alice_coloring,max_font_size=400, random_state=420,font_path='/Users/sebastian/Library/Fonts/Arial Unicode.ttf').generate(wl_space_split) image_colors = ImageColorGenerator(alice_coloring) plt.imshow(my_wordcloud.recolor(color_func=image_colors)) plt.imshow(my_wordcloud) plt.axis("off") plt.show()
下面對於程式碼的解析,僅跟初學 Python的朋友提示三點:
1)程式碼第24行,其他網路版本的程式碼為d= os.path.dirname(__file__),最好換成jacky這個版本的:
d=os.path.dirname(os.path.abspath(__file__)),具體原因jacky就不做過多解釋了;
2)程式碼第25行,一定要提前在環境路徑下建立wechat.jpg的圖片,這樣雲圖才能順利生成,並生成你希望的形狀。
3)提前在終端安裝jieba,matplotlib,wordcloud,numpy包
注意以上三點,想不執行成功都難。
執行上面的程式碼,得到下面的雲圖:
(三)資料洞察
以jacky的朋友圈為例,在雲圖中,我們可以看見,高頻詞有:自己,創始人,電商,成功,努力,營銷,網際網路,資料,夢想,生活,諮詢,我們,未來。
其實,這些詞jacky還可以繼續用機器學習演算法搞一下,但到這就淺嘗則止吧。
從這些具體的資訊中,可以抽象出我的個人人格標籤,具體解析:
自己,我們:說明我很自我,很自大,很自以為是;
努力,未來,夢想:說明我想通過努力來實現自己的價值;
創始人:說明我的社交圈還OK;
網際網路,資料:說明我的能力屬性;
營銷,諮詢:說明了我賴以生存的飯碗;
代理:這... ... 不好說了... ...
End
轉載請註明出處