我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用Python编程分析火爆全网的鱿鱼游戏豆瓣影评

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用Python编程分析火爆全网的鱿鱼游戏豆瓣影评

Hello,各位读者朋友们好啊,我是小张~

这不国庆嘛,就把最近很火的一个韩剧《鱿鱼游戏》刷了下,这部剧整体剧情来说还是非常不错的,很值得一看,

作为一个技术博主,当然不能在这儿介绍这部剧的影评,毕竟自己在这方面不是专业的,最关键还是自己也写不出来

技术工具

在正文开始之前,先介绍下本篇文章中用到的技术栈和工具。

本文用到的技术栈和工具如下,归结为四个方面;

  • 语言:Python,Vue ,javascript;
  • 存储:MongoDB;
  • 库:echarts ,Pymongo,WordArt…
  • 软件:Photoshop;

数据采集

本次数据采集的目标网站为 豆瓣 ,但自己的账号之前被封,所以只能采集到大概二百来条数据,豆瓣有相应的反爬机制,浏览10页以上的评论需要用户登录才能进行下一步操作

至于为啥账号被封,是因为之前自己学爬虫时不知道在哪里搞的【豆瓣模拟登录】代码,当时不知道代码有没有问题,愣头青直接用自己的号试了下,谁知道刚试完就被封了,而且还是永久的那种

image-20211002125521303

图1

在这里也给大家提个醒在以后做爬虫时,模拟登录时尽量用一些测试账号,能不用自己的号就别用,

这次数据采集也比较简单,就是更改图2 中 url 上的 start 参数,以 offset 为 20 的规则 作为下一页 url 的拼接;

image-20211002130109452

图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("class="lazy" data-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 条数据,主要采集的数据字段为 avatarnameratedatecomment,分别表示用户头像、用户名字、星级、日期,评论;结果见图3;

image-20211002130736309

图3

关于 Python 怎么使用 MongoDB,可以参考旧闻

数据可视化

可视化部分之前打算用 Python + Pyecharts 来实现,但 Python 图表中的交互效果不是很好,索性就直接用原生 Echarts + Vue 组合来实现,而且,这样的话,将所有图表放在一个网页中也比较方便

首先是对评论时间与评论数量做了一个图表预览,根据这些数据的评论时间作为一个散点图分布,看一下用户评论主要的时间分布

动画11

图4

图4中点的大小和颜色代表当天评论数量,而评论数量也可以侧面反应该剧当天的热度。

可以 了解到,《鱿鱼游戏》影评从 9 月17 日开始增长,在 20 号数量达到顶峰,21 日回落;在21日-29日评论数量来回震荡,相差不大;

直到国庆 10月1日最少,猜测可能是一方面是国庆假期大家都出去玩的缘故,另一方面是随着时间推移,这个剧的热度也就降下来了

为了了解大家对《鱿鱼游戏》的评价,我对这二百条数据对这个剧的【评分星级】绘制了一个饼图,最终效果见 图5

动画2

图5

说实话图5 的结果让我有些意外,至少对于我而言这部剧质量说实话还是蛮高的,绘图之前以为【五星】的占比应该是最大的,其次是【四星】,再然后是【三星】;

现在【三星】和【五星】的占比恰恰相反,猜测可能是这部剧的情节比较残忍,会引起人的不适,所以高分占比不高;

为了方便,最后我将上面两张图表放置在一个网页上,效果见图6 和 图7 两种不同布局

垂直布局

动画3

图6

水平布局

动画4

图7

词云可视化

本次采集的数据信息有限能分析的数据维度不多,关于数据图表方面的分析基本就到这里了,下面是对采集到的评论做了几张词云图

mask1_workArt

图8

从图8来看,去除现实中常用到的还是、就是等口头语,人性 是影评中频率最高的一个词,而这个词确实符合《鱿鱼游戏》这部剧的主题,从第一集开始到结束都是在刨析人性,赌徒们的”贪婪、赌性成瘾“,贵宾们的”弱肉强食“

mask1_workArt1

图9

对比上张词云图,图9凸显的信息相对就多了些,例如韩国、人设、刺激、剧情、赌博默示录、题材等都与剧情有关,除了这几个信息之外,李政宰、孔刘、李秉宪 等几个主演也被提到

最后,我将采集到的用户头像做了两张图片墙作为文章的结尾

mask2_wall

图10

图10照片墙的轮廓采用的是剧中的人物截图,一个是123木头人 ,另外一个是男一在玩游戏二的一个镜头:

image-20211002171542736

关于照片墙制作方法,可参考旧闻:

小结

好了,以上就是本篇文章的全部内容了,本文分析到的东西并不多,主要是介绍了 Python 在数据采集和可视化方面的一些应用。

如果内容对你有所帮助的话,欢迎读者朋友们将文章 分享 给更多的人!

最后感谢大家的阅读,我们下期见~

更多关于Python分析豆瓣影评的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用Python编程分析火爆全网的鱿鱼游戏豆瓣影评

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录