zoukankan      html  css  js  c++  java
  • 利用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

    转载请注明出处

  • 相关阅读:
    Luogu 1080 【NOIP2012】国王游戏 (贪心,高精度)
    Luogu 1314 【NOIP2011】聪明的质检员 (二分)
    Luogu 1315 【NOIP2011】观光公交 (贪心)
    Luogu 1312 【NOIP2011】玛雅游戏 (搜索)
    Luogu 1525 【NOIP2010】关押罪犯 (贪心,并查集)
    Luogu 1514 引水入城 (搜索,动态规划)
    UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)
    Luogu 1437 [HNOI2004]敲砖块 (动态规划)
    Luogu 1941 【NOIP2014】飞扬的小鸟 (动态规划)
    HDU 1176 免费馅饼 (动态规划)
  • 原文地址:https://www.cnblogs.com/shujufenxi/p/7786599.html
Copyright © 2011-2022 走看看