• 一个简单的Python案例教学,用商品评论来做词云分析


    前言

    环境使用

    • Python 3.8
    • Pycharm

    模块使用

    • requests
    • jieba 结巴分词
    • wordcloud 词云

    数据来源分析

    明确需求 <数据来源分析>

    • 采集数据是什么东西? 通过那个url地址得到想要数据的内容
    • 抓包分析: 浏览器自带工具 --> 开发者工具
      I. F12 或者 鼠标右键点击检查 选择 network 点击第二页
      II. 复制评论内容, 在开发者工具里进行搜索, 可以直接找对应评论数据包

    https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100029079354&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&rid=0&fold=1

    数据获取代码实现

    发送请求

    url = 'https://club.jd.com/comment/productPageComments.action'
    # 请求参数 --> 字典数据类型 构建完整键值对
    data = {
        # 'callback': 'fetchJSON_comment98',
        'productId': '100029079354',
        'score': '0',
        'sortType': '5',
        'page': page,
        'pageSize': '10',
        'isShadowSku': '0',
        'rid': '0',
        'fold': '1',
    }
    # 模拟浏览器 --> headers 请求头
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    # 发送请求 requests 模块 get 方法<请求方式>
    # 等号左边: url/params/headers 属于get函数里面形式参数 等号右边 url/data/headers 传入进去参数/变量
    response = requests.get(url=url, params=data, headers=headers)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    获取数据, 服务器返回响应数据

    • response 响应对象
    • response.text 获取响应文本数据
    • response.json() 获取响应json字典数据

    解析数据

    字典数据类型: 通过键值对提取数据内容 <字典取值>
    根据冒号左边的内容[键], 提取冒号右边的内容[值]

    # for循环遍历 把列表里面元素一个一个提取出来
    for i in response.json()['comments']:
        content = i['content']
        print(content)
    
    • 1
    • 2
    • 3
    • 4

    保存数据

    with open('口红评论.txt', mode='a', encoding='utf-8') as f:
        # 写入数据内容
        f.write(content)
        f.write('\n')
    
    • 1
    • 2
    • 3
    • 4

    词云代码

    # 导入结巴分词  jieba 模块国人开源的
    import jieba
    # 导入词云
    import wordcloud
    # 导入读取图片
    import imageio
    # 读取图片内容
    py = imageio.imread('img\\矢量图5.png')
    
    # 读取文件 返回对象 mode 方式模式 r 读 a追加写入保存 mode 默认是r
    f = open('口红评论.txt', encoding='utf-8')
    # 读取内容
    text = f.read()
    # 分词 --> 把完整一句话分成很多个单词
    string = ' '.join(jieba.lcut(text))
    # 词云图 配置
    wc = wordcloud.WordCloud(
        width=1000, # 宽
        height=700,  # 高
        font_path='msyh.ttc', # 词云字体
        # 设置停用词, 把没有词汇, 停用
        stopwords={'的', '了', '很', '也'},
        # 设置背景颜色
        # background_color='pink',
        contour_width=5,
        contour_color='pink',
        mask=py
    )
    # string 数据传入进去
    wc.generate(string)
    # 导入词云图
    wc.to_file('有形状的词云黑.png')
    print(string)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

  • 相关阅读:
    【图像配准】基于SURF特征实现印刷体汉字配准附matlab代码
    QtConcurrent使用成员函数:QT5&QT6(老写法报错)的区别
    Matlab论文插图绘制模板第41期—气泡图(bubblechart)
    Unity3D Text使用超链接跳转事件
    Vue自动生成二维码并可下载二维码
    TF-PLA 转铁蛋白修饰聚乳酸 Transferrin-PEG-PLA
    基于py的网络路由实验
    通义大模型使用指南之通义听悟
    封装一个antd的Table操作项中的一个展开与收起通用功能
    关于el-upload看这一篇就够了
  • 原文地址:https://blog.csdn.net/m0_48405781/article/details/127654255