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

    转载请注明出处

  • 相关阅读:
    c++模板类的使用,编译的问题
    js中对象深度拷贝的方法(浅拷贝)
    java8 Function 函数式接口的妙用
    Redis Web Ui管理工具
    前端省市联动,与django传递信息
    做人做事,行为规范
    几斤猫尿,醉享生活
    分布式系统之平台三大支柱
    祭奠十年,我今起步
    一步一步,从一而终
  • 原文地址:https://www.cnblogs.com/shujufenxi/p/9054465.html
Copyright © 2011-2022 走看看