zoukankan      html  css  js  c++  java
  • 【python】微信朋友圈数据分析及可视化(爬虫+数据挖掘)


    1. 成果展示

    在这里插入图片描述
    在这里插入图片描述

    2. 环境配置

    环境配置教程请参考我的这篇文章:【python】自动化连接和操作手机微信

    3. 爬朋友圈

    爬所有用户前100天(最多只能爬到173天前)发的朋友圈数据,包括:用户昵称文本内容发布时间

    from appium import webdriver
    import time
    
    # 连接手机微信
    caps = {
        "platformName": "Android",
        "deviceName": "emulator-5554",
        "platformVersion": "6.0.1",
        "appPackage": "com.tencent.mm",
        "appActivity": ".ui.LauncherUI",
        "noReset": "True",
        "unicodeKeyboard": "True",
        "resetKeyboard": "True"
    }
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
    
    # 爬朋友圈数据
    time.sleep(10)
    print('点击发现')
    driver.find_elements_by_id('com.tencent.mm:id/cnh')[2].click()
    time.sleep(5)
    print('点击朋友圈')
    driver.find_element_by_id('com.tencent.mm:id/b3b').click()
    time.sleep(5)
    print('开始爬虫')
    with open('pyqs.csv', 'a', encoding='utf_8_sig') as f:
        f.write('昵称,文本,时间'+'
    ')
    while True:
        for item in driver.find_elements_by_id('com.tencent.mm:id/fn9'):
            try:
                name = item.find_element_by_id('com.tencent.mm:id/e3x').text
            except:
                name = ''
            try:
                text = item.find_element_by_id('com.tencent.mm:id/b_e').text
            except:
                try:
                    text = item.find_element_by_id('com.tencent.mm:id/gbx').text
                except:
                    text = ''
            try:
                time = item.find_element_by_id('com.tencent.mm:id/ij').text
            except:
                time = ''
            if name != '' and text != '' and time != '':
                name = name.replace(',', ' ')
                text = text.replace(',', ' ').replace('
    ', ' ')
                each = ','.join([name, text, time])
                with open('pyqs.csv', 'a', encoding='utf_8_sig') as f:
                    f.write(each+'
    ')
                print(each)
            else:
                pass
        # 下滑
        driver.swipe(0, 1400, 0, 700)
        if '101天前' in time:
            print('爬取结束')
            break
        else:
            pass
    

    4. 数据处理

    爬下来的数据存到pyqs.csv文件中,我们发现有很多重复数据,做一下去重:

    '''依赖模块
    pip install pandas
    '''
    import pandas as pd
    df = pd.read_csv('pyqs.csv')
    df = df.drop_duplicates()
    df.to_csv('pyqs2.csv', encoding='utf_8_sig')
    

    5. 数据分析

    数据分析代码请参考我的这篇文章:【python】B站弹幕数据分析及可视化(爬虫+数据挖掘)

    5.1. 词频分析

    利用jieba库做词频分析,并用pyecharts库绘制词云图。

    5.1.1. 昵称词频分析

    可以看出你的微信好友中谁发朋友圈最勤。(出于对隐私的保护,请允许我打一下码)
    在这里插入图片描述

    5.1.2. 内容词频分析

    可以看出你的好友经常关注或谈论哪些内容。
    在这里插入图片描述

    5.2. 情感分析

    利用snownlp库做情感分析,并用pyecharts库绘制饼状图。由饼状图可知:微信好友中大多人发的内容都是比较积极的。
    在这里插入图片描述

    6. 引用参考

    https://blog.csdn.net/qq_42951560/article/details/110558662

  • 相关阅读:
    jquery flot详解
    AngularJS例子 ng-repeat遍历输出
    JS正则表达式
    jQuery Validate验证框架详解
    解决IE6下png图片不透明
    IT经理,你在这个位置吗
    如何做一个好的前端重构工程师
    noi1816 画家问题(技巧搜索Dfs)
    codevs1380 没有丧尸的舞会
    2016年春季大学先修课考试
  • 原文地址:https://www.cnblogs.com/ghgxj/p/14219067.html
Copyright © 2011-2022 走看看