大家好,我是香菜

今天在看taptap 的有什么新游戏的时候,突发奇想看看排行榜上的游戏玩家都在评论什么,所以选择一款游戏进行分析,我选择《原神》这款现在在比较火的游戏,废话不多说,我们开始吧。

TapTap 是一个推荐高品质手游的手游分享社区,实时同步全球各大应用市场游戏排行榜,与全球玩家共同交流并发掘高品质手游。每一款推荐游戏,都是由专业的测评团队从全球海量的游戏中精选而出,只为你提供好玩的手机游戏。

1、需求分析:
需要对目标网站进行评论的爬取,然后需要对其中的词进行分析,画出一个词云,需求很简单,一句话结束,这就是项目经理,哈哈,程序员忙活半天。

程序分析:

找到目标游戏api主页

爬取评论

对评论进行分词

去除一些没有意义的词,比如 我,的 这种停用词

绘制词云

输出图片

2、技术分析
2.1 爬取数据
目标网站:https://www.taptap.com/top/cloud-game

打开详情页,https://www.taptap.com/app/168332/review

可以看到下面的评论,说啥的都有,唉,做游戏真难。

常规操作,打开F12 ,然后一直往下拖动,可以看到评论是动态加载的,既然是动态加载的我们看下到底怎么请求的?

https://www.taptap.com/webapiv2/review/v2/by-app?app_id=168332&from=20&limit=10&X-UA=V%3D1%26PN%3DWebApp%26LANG%3Dzh_CN%26VN_CODE%3D41%26VN%3D0.1.0%26LOC%3DCN%26PLT%3DPC%26DS%3DAndroid%26UID%3D59e7bddc-565f-4774-a945-0cbcc13c1ad3%26DT%3DPC
分析下url

from=20&limit=10 :盲猜是从第20个开始,请求10个评论,多次拖动后验证了猜想,优秀

X-UA:X:在计算机中一般表示 extend,扩展的意思 UA:User Agent,有啥用我也不知道,直接拷出来就行了

我们试试修改from 和to 参数直接请求看看结果:

完美,看起来可以直接请求数据,因此我们可以直接修改参数,一直请求就可以了

2.2 词云的创建
词云的创建没什么难度,只是需要面对的是对评论数据的处理,然后调用wordCloud 就可以了,为了能有人更多的读取这篇文章,我给自己加了个难度,对一个美女图片进行了扣取,然后显示成美女的形状,看下原图

就问你稀不稀罕?

3、show you code
3.1 环境的安装
我的环境 :

python:python3.8

OS : win7

IDE :pycharm

拷贝下面几个命令到控制台,安装必要的包,注:一次使用一条哦

pip install matplotlib
pip install jieba
pip install wordcloud
3.2 爬取评论的代码
#!/usr/bin/env python
# encoding: utf-8
 
 
"""
#Author: 香菜
@time: 2021/9/2 0002 下午 9:07
"""
import requests
 
def get_content(url):
   try:
       user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0'
       response = requests.get(url, headers={'User-Agent': user_agent})
       response.raise_for_status()  # 如果返回的状态码不是200, 则抛出异常;
       response.encoding = response.apparent_encoding  # 判断网页的编码格式, 便于respons.text知道如何解码;
   except Exception as e:
       print("爬取错误")
   else:
       print(response.url)
       print("爬取成功!")
       return response.json()
if __name__ == '__main__':
   # baseUrl = "https://www.taptap.com/app/168332/review"
   # https://www.taptap.com/webapiv2/review/v2/by-app?app_id=168332&from=30&limit=10&X-UA=V%3D1%26PN%3DWebApp%26LANG%3Dzh_CN%26VN_CODE%3D41%26VN%3D0.1.0%26LOC%3DCN%26PLT%3DPC%26DS%3DAndroid%26UID%3D929182cb-bba8-4a5d-aee8-3aaacb24dcc7%26DT%3DPC
   fromWhere = 0
   fileName = 'comments.txt'
   while fromWhere != -1:
       url = 'https://www.taptap.com/webapiv2/review/v2/by-app?app_id=168332&from='+str(fromWhere)+'&limit=10&X-UA=V%3D1%26PN%3DWebApp%26LANG%3Dzh_CN%26VN_CODE%3D41%26VN%3D0.1.0%26LOC%3DCN%26PLT%3DPC%26DS%3DAndroid%26UID%3D929182cb-bba8-4a5d-aee8-3aaacb24dcc7%26DT%3DPC'
       jsonData = get_content(url)
       for item in jsonData['data']['list']:
           comment = item['moment']['extended_entities']['reviews']
           for c in comment:
               with open(fileName, 'a+', encoding='utf-8') as f:
                   f.write(c['contents']['text'])
 
       fromWhere += 10
 
       if fromWhere >50:
           fromWhere = -1
注:我将下载的评论写入到了文本文件comments.txt中,

我只爬取了50条的评论,没有爬取更多的内容,你可以修改参数进行爬取。

3.3 词云的制作
#!/usr/bin/env python
# encoding: utf-8
from os import path
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud, STOPWORDS
 
"""
#Author: 香菜
@time: 2021/9/2 0002 下午 8:36
"""
# # 安装:pip install matplotlib
# # 安装:pip install jieba
# # 安装pip install wordcloud
if __name__ == '__main__':
   # 1、下载数据
   # 2、整理数据
   # 3、画词云
   # !/usr/bin/Python
   # -*- coding: utf-8 -*-
   ###当前文件路径
   d = path.dirname(__file__)
 
   # 读取文本
   file = open(path.join(d, 'comments.txt'),encoding='utf-8').read()
   ##进行分词
   default_mode = jieba.cut(file)
   text = " ".join(default_mode)
   alice_mask = np.array(Image.open(path.join(d, "0.jpeg")))
   # stop = open('baidu_stop.txt', 'r+', encoding='utf-8')
   # 用‘\n’去分隔读取,返回一个一维数组
   stopword = set(map(str.strip, open('baidu_stop.txt',encoding='utf-8').readlines()))
   stopwords = set(stopword)
   wc = WordCloud(
       # 设置字体,不指定就会出现乱码,这个字体文件需要下载
       font_path=r'c:\windows\fonts\simsun.ttc',
       background_color="white",
       max_words=2000,
       mask=alice_mask,
       stopwords=stopwords)
   # 生成词云
   wc.generate(text)
 
   # 放到图片中
   wc.to_file(path.join(d, "香菜.jpg"))
 
   # show
   plt.imshow(wc, interpolation='bilinear')
   plt.axis("off")
   plt.figure()
   plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear')
   plt.axis("off")
   plt.show()
   pass
3.4 处理结果
爬取的数据

生成的图片,注:右边是生成的词云,左边是原图

4、遇到的问题
4.1 json 数据的读取
使用requests 请求回来数据后是json 数据,使用下面的方式接收jsons

response.json()
4.2 json 数据路径的查看
返回来的json数据结构曾经蛮复杂的,下面是我在调试时的json数据,可以看到一层套一层的,非常复杂,在开发的过程中如果不好知道路径,可以调试模式下,断点看下参数是什么样子,然后继续写。小技巧!

4.3 jieba 的使用
jieba分词我们之前就用过,可以看下上篇:震惊了,用Python这么简单实现了聊天系统的脏话,广告检测

在调试的过程中我发现一些无意义的词汇占了很大比例,比如我,我的等等这种词汇,明显不是我想要的,所以要去除这些词汇。专业里面来说叫停用词。

停用词是指在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。这些停用词都是人工输入、非自动化生成的

我在代码中也提供了停用词,需要的可以下载。如果有些词停用词中没有,你可以手动添加。

4.4 图片的扣取
原图是这样的,我想要扣除后面的背景,只留下美女的轮廓,对于一个程序员来说,这真的挺难,最后还是自己瞎折腾了一下才搞定,这真的好难。

4.5 字体的绘制
在绘制的时候,如果不选择中文字体,可能会乱码,所以选择了simsun.ttc。

window中自带的字体都有下面这些,你可以自己切换,看下不同的效果

5、还有哪些优化点
这里我只是为了完成一个小的功能,将功能进行了分解,但是还是有一些优化点。

5.1 拉取子评论
可以把评论里面的子评论也进行拉取,作为数据进行导入,这样分析可能更全面

5.2 可以拉取游戏的评分
每个评论都对游戏进行了打分,可以分开对不同打分的评论进行处理,看下不同分数下各种评论的问题焦点,可以做出不同的优化

5.3 对爬取的直接分词
现在的操作是将爬取和绘制词云进行了分开处理,这样分两步了,多次操作词云都要重新分词和绘制。可以在爬取的时候直接分词,这样在绘制词云的时候可以避免重复的操作

5.4 不存入txt
可以将爬取的输入放入redis,这样操作速度更快。

总结:
这个还是花了不少时间写的代码,总结成文章也花了不少时间,不知道能不能说清楚,有问题的话可以留言

原创不易,求个点赞转发,支持一下。
————————————————
版权声明:本文为CSDN博主「香菜聊游戏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/perfect2011/article/details/120101112

用Python进行游戏舆论分析,生成词云,源码赠送,文末 评论送书包邮!!!相关推荐

  1. 利用Python进行词频统计并生成词云——以京东商城iphone13购物评论为例

    本文介绍一种快速生成关键词-词频统计-词云生成的办法,作为Python数据分析初级技能,除基本运行环境外无需其他软件或工具,且流程搭建成功后可重复利用,可极大提升相似事务的处理效率. 一.操作环境 1 ...

  2. python snownlp情感分析_SnowNLP情感分析+生成词云

    本帖最后由 missy 于 2017-12-9 00:12 编辑 因为最近看了一下<致我们单纯的小美好>,虽然情节是有点"二"吧,但是看了觉得真的很怀念初高中的日子,一 ...

  3. python爬取豆瓣影评生成词云的课程设计报告_简单爬取《小丑》电影豆瓣短评生成词云...

    导语 在前段时间看了杰昆菲尼克斯的小丑电影,心里很好奇大部分观众看完这部电影之后对此有什么评价,然后看了看豆瓣短评之后,觉得通过python把短评中出现最多的单词提取出来,做成一张词云,看看这部电影给 ...

  4. python爬取微博数据词云_用Python爬取微博数据生成词云图片

    原标题:用Python爬取微博数据生成词云图片 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能BI.大数 ...

  5. 豆瓣电视剧评论的爬取以及进行情感分析+生成词云

    很多时候我们要了解一部电视剧或电影的好坏时都会去豆瓣上查看评分和评论,本文基于豆瓣上对某一部电视剧评论的爬取,然后进行SnowNLP情感分析,最后生成词云,给人一个直观的印象 1. 爬取评论 以前段时 ...

  6. [附源码]计算机毕业设计Python架构的博客平台设计(程序+源码+LW文档)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+N ...

  7. [附源码]计算机毕业设计Python基于Web的绿色环保网站(程序+源码+LW文档)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+N ...

  8. python爬取豆瓣影评生成词云的课程设计报告_Python爬取豆瓣影评,生成词云图,只要简单一步即可实现。...

    最近看了一部电影<绣春刀>,里面的剧情感觉还不错,本文爬取的是绣春刀电影的豆瓣影评,1000个用户的短评,共5W多字.用jieba分词,对词语的出现频率进行统计,再通过wordcloud生 ...

  9. python进阶免费-【Python进阶,一学就会】系列1(文末免费送10本书)

    请标星公众号,第一时间获取最新资讯 本期作者:Ravindra Parmar 本期编辑:Dotton | 公众号翻译部成员 ↓↓年度巨献↓↓ ↑↑点我↑↑ 送书活动在文末 本系列,我们将会对Pytho ...

最新文章

  1. react把表格渲染好ui_在React中实现条件渲染的7种方法
  2. SuperSocket 服务管理器 (ServerManager)
  3. paddlehub安装使用
  4. 多篇顶会论文看DRO (Distributionally Robust Optimization) 最新进展
  5. html调出手机系统设置,手机怎么打开路由器设置界面?
  6. Eclipse Java注释模板设置详解
  7. MongoDB在Linux下常用优化设置
  8. LG下月将用新品牌发布5G手机:比三星Galaxy S20更便宜
  9. 4-3 组件参数校验与非props特性
  10. 百度ai—细粒度图像识别
  11. cordova打包之android应用签名
  12. AUTOSAR和OSEK关系及网络管理比较
  13. 特种期货开户交易权限开通认定标准
  14. 企业微信好友和微信好友的区别
  15. java循环结构sum关于质数,质数
  16. python模拟实现QQ邮箱登录
  17. libxml2常用库函数详解
  18. 优达学城 Udacity 数据分析 数据科学家 数据工程师 商业分析 SQL
  19. 计算机毕业设计Java新冠疫苗接种预约系统登录(源码+系统+mysql数据库+Lw文档)
  20. 暴风影音使用的小技巧

热门文章

  1. 哪吒票房破30亿,这部国漫,重刷N次,仍泪流满面……
  2. PowerDesigner 12中文+破解
  3. 学习笔记(04):Python 面试100讲(基于Python3.x)-请详细描述print函数的用法
  4. 项目实战:银行自动提款机系统
  5. 内部存储空间不足_手机存储空间不足应该如何解决
  6. 微信太占用内存了,有什么办法清除?
  7. 冒泡排序(BubbleSort)
  8. Falcon:三代reads比对组装工具箱
  9. 黑白,照片滤镜,通道混合器,阈值,渐变映射,可选颜色,阴影高光,去色,匹配颜色
  10. MySQL 数据库主从复制的基本原理和步骤