1. 程式人生 > >利用Python爬取朋友圈資料,爬到你開始懷疑人生

利用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

轉載請註明出處