使用Python编程分析火爆全网的鱿鱼游戏豆瓣影评
作者:小张Python 发布时间:2023-10-11 00:35:26
Hello,各位读者朋友们好啊,我是小张~
这不国庆嘛,就把最近很火的一个韩剧《鱿鱼游戏》刷了下,这部剧整体剧情来说还是非常不错的,很值得一看,
作为一个技术博主,当然不能在这儿介绍这部剧的影评,毕竟自己在这方面不是专业的,最关键还是自己也写不出来
技术工具
在正文开始之前,先介绍下本篇文章中用到的技术栈和工具。
本文用到的技术栈和工具如下,归结为四个方面;
语言:Python,Vue ,javascript;
存储:MongoDB;
库:echarts ,Pymongo,WordArt…
软件:Photoshop;
数据采集
本次数据采集的目标网站为 豆瓣 ,但自己的账号之前被封,所以只能采集到大概二百来条数据,豆瓣有相应的反爬机制,浏览10页以上的评论需要用户登录才能进行下一步操作
至于为啥账号被封,是因为之前自己学爬虫时不知道在哪里搞的【豆瓣模拟登录】代码,当时不知道代码有没有问题,愣头青直接用自己的号试了下,谁知道刚试完就被封了,而且还是永久的那种
图1
在这里也给大家提个醒在以后做爬虫时,模拟登录时尽量用一些测试账号,能不用自己的号就别用,
这次数据采集也比较简单,就是更改图2 中 url 上的 start
参数,以 offset
为 20 的规则 作为下一页 url 的拼接;
图2
拿到 请求连接之后,用 requests 的 get 请求,再对获取到的 html 数据做个解析,就能获取到我们需要的数据了;采集核心代码贴在下方
for offset in range(0,220,20):
url = "https://movie.douban.com/subject/34812928/comments?start={}&limit=20&status=P&sort=new_score".format(offset)
res = requests.get(url,headers= headers)
# print(res.text)
soup = BeautifulSoup(res.text,'lxml')
time.sleep(2)
for comment_item in soup.select("#comments > .comment-item"):
try:
data_item = []
avatar = comment_item.select(".avatar a img")[0].get("src")
name = comment_item.select(".comment h3 .comment-info a")[0]
rate = comment_item.select(".comment h3 .comment-info span:nth-child(3)")[0]
date = comment_item.select(".comment h3 .comment-info span:nth-child(4)")[0]
comment = comment_item.select(".comment .comment-content span")[0]
# comment_item.get("div img").ge
data_item.append(avatar)
data_item.append(str(name.string).strip("\t"))
data_item.append(str(rate.get("class")[0]).strip("allstar").strip('\t').strip("\n"))
data_item.append(str(date.string).replace('\n','').strip('\t'))
data_item.append(str(comment.string).strip("\t").strip("\n"))
data_json ={
'avatar':avatar,
'name': str(name.string).strip("\t"),
'rate': str(rate.get("class")[0]).strip("allstar").strip('\t').strip("\n"),
'date' : str(date.string).replace('\n','').replace('\t','').strip(' '),
'comment': str(comment.string).strip("\t").strip("\n")
}
if not (collection.find_one({'avatar':avatar})):
print("data _json is {}".format(data_json))
collection.insert_one(data_json)
f.write('\t'.join(data_item))
f.write("\n")
except Exception as e:
print(e)
continue
豆瓣爬取时需要记得加上 cookie 和 User-Agent,否则不会有数据为空,
为了后面数据可视化提取方便,本文用的是 Mongodb 作为数据存储,共有211 条数据,主要采集的数据字段为 avatar
,name
、rate
、date
、comment
,分别表示用户头像、用户名字、星级、日期,评论;结果见图3;
图3
关于 Python 怎么使用 MongoDB,可以参考旧闻
数据可视化
可视化部分之前打算用 Python + Pyecharts 来实现,但 Python 图表中的交互效果不是很好,索性就直接用原生 Echarts + Vue 组合来实现,而且,这样的话,将所有图表放在一个网页中也比较方便
首先是对评论时间与评论数量做了一个图表预览,根据这些数据的评论时间作为一个散点图分布,看一下用户评论主要的时间分布
图4
图4中点的大小和颜色代表当天评论数量,而评论数量也可以侧面反应该剧当天的热度。
可以 了解到,《鱿鱼游戏》影评从 9 月17 日开始增长,在 20 号数量达到顶峰,21 日回落;在21日-29日评论数量来回震荡,相差不大;
直到国庆 10月1日最少,猜测可能是一方面是国庆假期大家都出去玩的缘故,另一方面是随着时间推移,这个剧的热度也就降下来了
为了了解大家对《鱿鱼游戏》的评价,我对这二百条数据对这个剧的【评分星级】绘制了一个饼图,最终效果见 图5
图5
说实话图5 的结果让我有些意外,至少对于我而言这部剧质量说实话还是蛮高的,绘图之前以为【五星】的占比应该是最大的,其次是【四星】,再然后是【三星】;
现在【三星】和【五星】的占比恰恰相反,猜测可能是这部剧的情节比较残忍,会引起人的不适,所以高分占比不高;
为了方便,最后我将上面两张图表放置在一个网页上,效果见图6 和 图7 两种不同布局
垂直布局
图6
水平布局
图7
词云可视化
本次采集的数据信息有限能分析的数据维度不多,关于数据图表方面的分析基本就到这里了,下面是对采集到的评论做了几张词云图
图8
从图8来看,去除现实中常用到的还是、就是等口头语,人性 是影评中频率最高的一个词,而这个词确实符合《鱿鱼游戏》这部剧的主题,从第一集开始到结束都是在刨析人性,赌徒们的”贪婪、赌性成瘾“,贵宾们的”弱肉强食“
图9
对比上张词云图,图9凸显的信息相对就多了些,例如韩国、人设、刺激、剧情、 * 默示录、题材等都与剧情有关,除了这几个信息之外,李政宰、孔刘、李秉宪 等几个主演也被提到
最后,我将采集到的用户头像做了两张图片墙作为文章的结尾
图10
图10照片墙的轮廓采用的是剧中的人物截图,一个是123木头人 ,另外一个是男一在玩游戏二的一个镜头:
关于照片墙制作方法,可参考旧闻:
小结
好了,以上就是本篇文章的全部内容了,本文分析到的东西并不多,主要是介绍了 Python 在数据采集和可视化方面的一些应用。
如果内容对你有所帮助的话,欢迎读者朋友们将文章 分享 给更多的人!
最后感谢大家的阅读,我们下期见~
来源:https://blog.csdn.net/weixin_42512684/article/details/120597343
猜你喜欢
- 题目:轮盘分为三部分: 一等奖, 二等奖和三等奖;轮盘转的时候是随机的,如果范围在[0,0.08)之间,代表一等奖,如果范围在[0.08,0
- 最近接了个项目,其中有需求是要实现摇一摇红包功能,在网上搜了好久,都没有找到源码,没办法,只有自动写了,下面小编把我的劳动成果分享给大家供大
- 目录获取二维码部分获取关注状态值解析微信服务器报文大致思路:调用微信带参数二维码接口生成二维码,前端显示二维码同时于服务器进行长链接通信,监
- 我们大家都知道CSS功能的强大,而有关CSS基本的排版控制虽然已有详细的使用说明和参考教程,但还有许多丰富的CSS排版能力,是很少能查到的。
- 本文实例讲述了js+php实现静态页面实时调用用户登陆状态的方法。分享给大家供大家参考。具体分析如下:在程序开发中,经常会把页面做成html
- 本文介绍了随机提取N条记录的例子,通过Sql server与access数据库的代码比较让你更快的掌握。随机提取10条记录的例子:Sql s
- adodb.stream对象的方法/属性cancel 方法使用方法如下object.cancel说明:取消执行挂起的异步 execute 或
- 获取评论贴的请求头与表单数据下一篇在这里这里,我们随便选取一个网站,获取该贴评论后的请求头,表单数据以及评论贴链接。(因为涉及敏感信息,自己
- bottle是一个小型web框架,很小只有一个文件,但功能确很强大,学起来也简单,简单和小巧的同时也有很多不足,某些功能支持还不是很完善,比
- 如果不用类库(如jquery)来写,往往很多时候,都需要通过id或tag来获取html里的某一对象,然后对其进行操作。为了节省代码,把常用的
- 先了解如何利用python语言实现以平面和标记物进行姿态估计本实验只是先实现一个简单的小例子。简单来说就是先识别出图像中的参考面,再拍摄一张
- 研究了一段时间酷狗音乐的接口,完美破解了其vip音乐下载方式,想着能更好的追求开源,故写下此篇文章,本文仅供学习参考。虽然没什么
- 如何做一个看他爱不爱你的小测验?<%CurQ = Request.Form("CurQ")An
- 在python中使用open函数对文件进行处理。1.open()python打开文件使用open()函数,返回一个指向文件的指针。该函数常用
- memcache 的工作就是在专门的机器的内存里维护一张巨大的hash表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率,减
- Microsoft SQL Server 7.0安全问题Microsoft Corporation【「Microsoft SQL Serve
- 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2
- 首先,我想说下写代码的一些习惯,第一,任何可配置的参数或变量都要写到一个config文件中。第二,代码中一定要有日志记录和完善的报错并记录报
- 前言centos 是自带python的。但是版本稍微旧一些。搞python开发,肯定要用新一点的稳定版。所以,要升级一下python。本文将
- 需求背景公司前端使用 Highcharts 构建图表,图表的图例支持点击显示或隐藏相应的指标。现在有需求后端需要存储用户在前端点击后显示图表