日常工作中会需要对玩家的一些评价进行整理分析,曾经人肉扫、手工采蛮痛苦的,所以,今天TA来了~

05

目录:

  • 1.引入需要的库

  • 2.评论内容采集

  • 3.热词词云制作

  • 4.程序跑起来

预览

同学们,猜猜以下6款游戏分别是TapTap上面的哪6款产品呢??欢迎在留言区留言哦~【我们会在接下来教大家怎么一键生成大家喜爱的游戏产品评论热词词云】

1.引入需要的库

由于我们这里需要采集评论内容,同时对这些评论数据进行分词与热词词云制作,因此需要引入的第三方库较多。考虑到使用者环境的差异性,这里采用pip.main方法,若加载时发现依赖库不存在则自动安装,哇,好方便啊~

# 如果需要引用的库未安装,则自动安装 try:    import requests    import pandas as pd    from bs4 import BeautifulSoup    import jieba    import jieba.analyse    import matplotlib.pyplot as plt    from wordcloud import WordCloud,STOPWORDS    import numpy as np    from PIL import Image# 使用pip.main()方法进行依赖库的安装(这里穷举了需要用到的库)   except  ImportError:    import pip    pip.main(["install", "--user", "requests","beautifulsoup4","jieba","matplotlib","wordcloud","pandas","pillow"])    import requests    import pandas as pd    from bs4 import BeautifulSoup    import jieba    import jieba.analyse    import matplotlib.pyplot as plt    from wordcloud import WordCloud,STOPWORDS    import numpy as np        from PIL import Image 

以下为在没有安装依赖库的python环境下运行结果,即会自动进行依赖库下载安装~

指定依赖库自动下载安装

2.评论内容采集

Taptap玩家评价内容的采集比较简单,其评论页有非常明确的变化规则,主要由应用id、评论排序类型和页码三部分组成。

https://www.taptap.com/app/130630/review?order=default&page=1#review-list

其中130630是应用id,这里是手游 天涯明月刀;default是评论排序类型,比如最新、最热等;1是页码,即当前选定的排序类型下的评论内容页码(每页20条评价)。

我们直接通过requests库的get方法请求网页数据,然后用bs4进行数据解析找到我们需要的评论文本内容即可。此前介绍过类似方法,这里不详细介绍代码逻辑,大家可以直接看下面代码:

def tapReview(appid,num,order):    '''    Parameters    ----------    appid : int        你需要查询应用的数字id.    num : int        你需要爬取的评论页数.    num : str        你需要爬取的评论列表类型        默认:default        最新:update        最热:hot        游戏时长:spent.    Returns    -------    contents : list        评论内容列表.    '''    print('开始爬取数据...')    contents = []        n = 0    for i in range(1,num+1):     # 评价内容页(每页20条评价,不采集评价下面的回复内容)        url = f'https://www.taptap.com/app/{appid}/review?order={order}&page={i}#review-list'

        html = requests.get(url)        text = html.text

        soup = BeautifulSoup(text,'html.parser')         text_body = soup.find_all(class_="taptap-review-item collapse in")

        for j in range(len(text_body)):            text_html = text_body[j]            content = text_html.find(class_="item-text-body").text.strip()            n =n +1            contents.append(content)            print(f'\r已爬取{n}条评价内容',end=' ')

    return contents

以下是采集的评价内容部分截取

天刀部分评价内容

3.热词词云制作

词云制作需要对关键词进行频次计算,对于采集的评论,我们使用jieba做基础分词即可;如果需要去掉部分词,如“我们,觉得”等这种,我们可以添加停用词stopwords;如果我们需要添加自定义词,如“氪金,国服,手机游戏”等,可以使用jieba.add_word方法。对于生成的词云图,部分参数介绍如下:

mask:词云图背景图(词云图的表现可以依赖背景图)
background_color:词云图背景色调
font_path:词云文本字体
max_words:词云显示的最大词数

def ciYun(data,addWords,stopWords):    '''    Parameters    ----------    data : list        需要用于制作词云的文本内容列表.    addWords : list        自定义词典列表.    stopWords : list        停用词列表.    Returns    -------    None.    '''    print('\n正在作图...')    comment_data = []

    for item in data:        if pd.isnull(item) == False:            comment_data.append(item)    # 添加自定义词典     for addWord in addWords:        jieba.add_word(addWord)

    comment_after_split = jieba.cut(str(comment_data), cut_all=False)    words = ' '.join(comment_after_split)

    # 词云停用词     stopwords = STOPWORDS.copy()    for stopWord in stopWords:        stopwords.add(stopWord)

    # bg=np.array(Image.open(r"C:\Users\gongdc\Desktop\sgyx.png"))    # mask=bg    wc = WordCloud(width=1080, height=960, background_color='black', font_path='FZZJ-YGYTKJW.TTF', stopwords=stopwords, max_font_size=400, random_state=50)    wc.generate_from_text(words)

    plt.figure(figsize=(15, 12))    plt.imshow(wc)    plt.axis('off')    # plt.savefig(r'F:\词云\9月3日评价词云.png')    plt.show()

    print('词云已生成~')

4.程序跑起来

由于对不同的游戏来说,我们在讨论的时候可能会有一些特殊的词汇,但是也不会特别多,因此我把它放在了外面,以列表的形式咱们自由添加~ 另外,停用词的话,找到了一份常用的存为txt文档供本地调用~

常见中文停用词: https://github.com/goto456/stopwords

if __name__ == "__main__":    # 采集游戏评论    data = tapReview(130630,10,'update')

    # 自定义词典    addWords = ['捏脸','手机版',"手游"]    # 添加停用词(读取本地停词文件)    stoptxt = pd.read_table(r'C:\Users\Gdc\Desktop\stop.txt',encoding='utf-8',header=None)    stoptxt.drop_duplicates(inplace=True)    stopWords = stoptxt[0].to_list()    # 运行~    ciYun(data,addWords,stopWords)

往期推荐

  • 今天要去看电影《八佰》了,我用Python爬了14.4万条评论看看大家都在聊啥~

  • matplotlib也玩动态可视化

默默关注才哥

然后惊艳所有人

可以叫我才哥

                 我就知道你在看!

评论安装_再也不用手动复制粘贴收集Taptap游戏评论了,还可以制作好看的热词词云图~...相关推荐

  1. python不能复制粘贴_【Python】Python代码不用怕复制粘贴

    标签: Python代码不用怕复制粘贴代码片段 *1. *[文件] fib.py ~ 144B # fib.py def fib(n): a, b = 0, 1 while a < n: pri ...

  2. 安装MathType后Word不能复制粘贴怎么办?

    作为一个专业的公式编辑器,MathType可以兼容800+应用程序,为了方便在Word中快速使用MathType,可以在工具栏加载MathType,可是这样在Word中就出现了冲突,导致Word的复制 ...

  3. 手动计算机键,大神教你把电脑设置每天自动开机,从此以后再也不用手动按电源键了!...

    为了让自己的办公桌面更加的整洁干净,很多朋友都会在桌上放置一个置物架,把笔记本电脑塞到这个置物架底下,在上面放一个显示器,这样的话桌面就会瞬间变得整洁很多.不过这有一个缺点,那就是每天早上来上班的时候 ...

  4. 如何设置多级标题_办公技巧|标题样式amp;多级列表结合,再也不用手动修改1.1、1.2 ...!...

    每周一句 Accept the things you cannot change. Have the courage to change the things you can. 接受那些你也无法改变的 ...

  5. 多帧点云数据拼接合并_多工作簿数据合并,还在手动复制粘贴就out了,用批处理一键搞定...

    相信许多朋友都有碰到过将多个工作簿文件数据合并到一张表的情况,这种情况下许多朋友想尽各种办法,复制粘贴也好.vba多表合并也罢,但是合并数据总感觉需要耗费很多时间. 如上图所示,我们需要将1-8月8个 ...

  6. eltable刷新整个表格方法_多个子表内容合并到总表,不用每次复制粘贴,全自动刷新...

    在我们工作中,经常会有多个表格分别录入数据,然后需要汇总到一块的情况 举一个例子,下面是模拟的数据,公司不同类目的3张销售表,分别是水果,3C,电器类目下的表格 我们需要汇总得到的结果是: 如果只是处 ...

  7. 擦窗机器人不用时怎么收纳_解放双手,再也不用手动擦窗啦

    新的一年来临之际,辞旧迎新的传统之一就是大扫除啦!新年新气象,大扫除清洁就显得尤为重要啦,窗户的清洁便是重中之重了,雁过留痕,雨过留声,玻璃真的是很容易沾染灰尘,加上有的地方常年累积的灰尘更是严重不堪 ...

  8. 知云文献翻译打不开_有了这个英文文献翻译助手,SCI论文阅读不用再复制粘贴...

    上一次给大家推荐SCI翻译神器后,大家的反响很强烈,看来大家对于英文写作都有一样的烦恼.身为科研工作者,SCI论文的写作确实是一座压垮很多人的大山.不过别怕,困难总会克服的. 大家平时在阅读英文文献时 ...

  9. word公式插件_再也不用担心我的公式写不出来了:一款公式输入神器实测

    → → https://mp.weixin.qq.com/s/gNRWdN-W4_Eb2MyyTpWzjw关注微信公众号:人工智能前沿讲习,重磅干货,第一时间送达 本文推荐一个公式输入神器,只要截图就 ...

最新文章

  1. opencv 保存读取mat
  2. CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
  3. oracle 文件写 n r,文本模式读写文件中\r和\n的问题
  4. U3D 场景切换时 脚本对象,GO对象,资源对象的问题
  5. python mutilprocessing多进程编程
  6. Linux下的屏保设置 xset s 与 xset dpms
  7. 吝啬的国度(dfs)
  8. Linux安装Django
  9. [BZOJ1492][NOI2007]货币兑换Cash(斜率优化+CDQ分治)
  10. Spring的p标签
  11. Golang代码测试:一点到面用测试驱动开发
  12. 关于从asc格式到pcd格式的转换
  13. 高德Mapabc地图标注 基础篇
  14. mysql主从配置修改重启无效
  15. 分享一个jQuery的自动客户端本地保存插件Sisyphus.js - 帮助你自动保存用户输入内容
  16. 六级通关笔记--词汇1
  17. 分享、活动、地推、广告:openinstall全渠道多场景解决方案
  18. 编辑重命名文件夹下多个文件名,一键操作技巧
  19. DFAnet:Deep Feature Aggregation for Real-time Semantic Segmentation自己翻译的
  20. ActiveMQ点对点消息传递

热门文章

  1. 前沿 | VLDB 2019论文解读:阿里巴巴大规模数据库智能参数优化的创新与实践
  2. 边缘AI方案落地问题探讨
  3. 【华为云技术分享】万万没想到,我在夜市地摊解决了MySQL临时表空间难题~~
  4. 【华为敏捷/DevOps实践】8. 持续交付,持续部署,傻傻分不清楚
  5. 计算机二级mysql程序设计题库_计算机二级MySQL数据程序设计模拟试题
  6. 红橙Darren视频笔记 点赞效果 动画练习
  7. 设计模式笔记十八:中介者模式
  8. spikingjelly里面的元组处理方式
  9. pycharm不能输入代码或删除代码
  10. WORD小数点对齐?