大数据分析-基于Python的电影票房信息数据的爬取及分析

概要

  现如今,人民群众对物质生活水平的要求已不再局限于衣食住行,对于精神文化有了更多的需求。电影在我国越来越受欢迎,电影业的发展越来越迅猛,为了充分利用互联网技术的发展,掌握电影业的态势,对信息进行挖掘和处理、提高数据库的利用率,本文采用文献分析法,对网络爬虫的相关内容以及发展现状进行简单介绍,并利用网页抓取技术爬取电影票房网站的相关数据,进行分析,为票房分析提供数据支撑。

关键词:Python 网络爬虫 电影票房

一、研究背景与意义

1.1研究现状

 &emsp网络爬虫在消息探索与数值整理进程中发挥着关键作用,上世纪初,就已有科学家对爬虫开启探究模式,现今,爬虫技能已处于成熟阶段。网络爬虫可主动获取网络界面,从而自行下载主人所需要的东西,基本实现了大幅度的数据下载模式,也更便于人们利用其进行高效工作。
在我国,爬虫技能发展的有关探究开启速度比较慢,但其后续的发展却非常迅猛。2003年该技能得到正式发展,国内数据探索的学论会越来越常态化,在该区域中的探究也随之扩展。2007年,浙大教授罗兵在旧版网络爬虫的基准上,增添了分析模型,使对该内容的分析越发完善。近几年,经过我国学界的专家、学者们的积极探讨与破除障碍,使得我国流动性网络消息的获得能力不断提升,爬虫体系的效能也随之增强。既减弱了人工完成的压迫感,也逐步实现了高效率的下载任务,成为了大众查找、分解与融合信息中不可或缺的手段。

1.2研究方法

①著作了解法
②撰写程序语言:Python语言、HTML语言、JS语言、css语言
③信息库技能:MySQL信息库技能

二、功能性需求分析

3.1系统功能分析

  本电影信息数据爬取系统主要由后台管理模块和用户模块两大模块组成,其中用户模块的适用对象为普通用户,主要功能包括了登录注册、主题设置、个人中心、可视化展示以及信息推送功能。其中除了登录注册功能之外,其他功能需要再用户登录的情况下才能使用。接着是后台管理模块,其适用对象主要为管理者。后台管理模块的主要功能为:数据爬取、用户管理、页面管理以及数据管理。其管理权限较大。具体功能模块示意图如3-1所示。
在这里插入图片描述

其中,管理员功能用例图对应图3-3,用户功能用例图对应图3-2
图3-1 系统功能模块示意图

在这里插入图片描述

图3-2 用户功能用例图
在这里插入图片描述

图3-3 管理员功能用例图

3.2系统功能性需求分析

  本节从用户功能和管理员这两个模块分别阐述其功能性需求和做详细的分析介绍。通过详细的分析介绍进一步明确系统功能性需求,为接下来的系统设计与开发做好布置工作。

3.2.1 系统用户功能性需求分析

在这里插入图片描述

图3-4 用户功能需求概述图

图3-4为猫眼电影票房信息数据爬取系统的用户功能需求的概述图,下面将对图3-4所列的功能进行详细的讲解和说明。
(1)用户登录功能
  用户登录功能为该系统的基础功能,用户进入该系统的前提是登录账号,登录账号之后可以进入系统,并且系统会开放所有功能供用户使用。用户在未登录账号的情况下,无法进入该系统。
(2)用户注册功能
  用户注册功能的作用是让用户在未拥有账号的状态下可以进行注册,获得账号,以得到更多的功能。
(3)页面基本操作功能
  页面基本操作功能是该系统的基础功能,该功能具有四个子功能,分别为页面刷新功能、页面全屏功能、页面主题设置功能以及信息推送内容。以下对其四个子功能进行详细的讲解和说明。
  页面刷新功能:该功能为页面基础功能的子功能之一,主要是给系统页面进行刷新,将系统页面置于初始状态。
  页面全屏功能:该功能为页面基础功能的子功能之一,主要是将系统页面放至全屏状态,方便用户更详细的查看页面。
  页面主题设置功能:该功能为页面基础功能的子功能之一,主要是将系统页面的主题颜色、按钮进行更改,方便用户根据自己的喜好对系统页面主题进行DIY设置。
信息推送功能:该功能为页面基础功能的子功能之一,主要是查看和预览用户的个人推送信息。
(4)数据可视化操作功能
  数据可视化操作功能为该系统的重要功能,该功能具有五个子功能,分别为浏览电影票房变化功能、浏览电影数据概括功能、浏览电影票房榜单功能、浏览电影演员劳模功能以及浏览电影票房占比功能。以下将其五个子功能进行详细的讲解和说明。
  浏览电影数据概括功能:该功能为数据可视化操作功能的子功能之一,主要是对全部电影信息数据进行概括,将其基本信息以表格形式展示出来,方便用户浏览查看。
  浏览电影票房占比功能:该功能为数据可视化操作功能的子功能之一,主要是对各个电影类型票房占比情况分别以柱状图和玫瑰图的形式展示出来,用户可以选择不同的年份和月份查看不同时期时的各个电影类型票房占比情况。
  浏览电影票房榜单功能,该功能为数据可视化操作功能的子功能之一,主要是将电影票房靠前的电影名字以词云图的形式展示出来,用户可以选择不同的年份和排行数量,查看不同时期时电影票房排行靠前的电影名字。票房越高的电影,其名称字号大小将会更大。方便用户对电影票房查看,一目了然。
  浏览电影票房变化功能,该功能为数据可视化操作功能的子功能之一,主要是将2015年至2019年的电影票房走势以折线图的形式展示出来,用户可以选择不同的电影类型查看该电影类型的票房走势情况。
  浏览电影演员劳模功能,该功能为数据可视化操作功能的子功能之一,主要是将电影演员参演次数情况以词云图和柱状图的形式展示出来,用户可以选择不同的年份和排行数量,查看不同时期时电影演员参演次数靠前的演员名字。参演次数越多的演员,在词云图里,其名字的字号大小将会更大,在柱状图里,将会更明显。
(5)用户个人信息修改功能
  用户个人信息修改功能为该系统的基础功能,该功能具有三个子功能,分别为用户更新基本信息功能、用户账号绑定功能以及用户修改密码功能。以下将其三个子功能进行详细的讲解和说明。
  用户更新基本信息功能,该功能为用户个人信息修改功能的子功能之一,用户在该功能上可以更改自己的邮箱、昵称、个人简介、街道地址以及联系电话信息。
  用户账号绑定功能,该功能为用户个人信息修改功能的子功能之一,用户可以在该功能上可以修改密保手机、密保邮箱、绑定QQ以及绑定微信。
  用户修改密码功能,该功能为用户个人信息修改功能的子功能之一,用户可以在该功能上修改自己的账号密码。

三、项目的实现

  经过一系列的爬虫工作,将有效的数据存储到数据库,最后再清洗加工将其可视化,直观地展示出数据的价值及意义。

4.1 以2019年的票房榜单Top20为例分析

构建2019年票房榜单Top20词云图,其生成图如下图6-1所示:
在这里插入图片描述

图6-1 2019年的票房榜单Top20词云图

6.2 结果分析

以上图6-1的2019年的票房榜单Top20词云图为例,票房榜首的《哪吒之魔皇降世》在图6-1中十分突出明显,该影片在上映短短的时间内就突破了以往动漫电影的票房记录。《哪吒之魔皇降世》的成功,归功于该影片创作团队的努力。导演一人为了该部影片亲力亲为,甚至为了省钱,自学担任动画的动作指导。而参与制作这部影片的人数高达1600多人,突破了目前国产动画制作人数的记录,是国产动漫电影新的里程碑。同时这部电影传达的价值观念也深深的引起广大观众的共鸣。只要努力,即使与众不同也能找到自己的光辉。所谓那句“我命由我不由天”。
下面以2015年至2019年之间电影票房为例,实现可视化。
在这里插入图片描述

图6-2各电影类型票房占总电影票房的玫瑰图

图6-2的玫瑰图是通过统计2015年至2019年里评分排行靠前的电影列表中,各部电影类型票房占全部电影票房的百分比。通过玫瑰图6-2 可以看到票房排行前三的分别是:动作、冒险及喜剧。可见观众对于动作片的喜爱程度是十分之高的,更偏向于视觉上带来的享受。
在这里插入图片描述

图6-3 总票房排名前20的词云图
图6-3的词云图是通过统计2015年至2019年里评分排行靠前的电影清单中,对总票房里排名前20的各部电影做视觉上的突出。图中清晰地看到《战狼2》这部电影的票房是最高的。《战狼2》这部电影的成功是多方面因素的结果,起决定作用的还是电影的质量,电影不论是在特效的处理上还是对剧情的把握,都不输好莱坞大片。同时该部电影军旅题材符合爱国主旋律,上映的时机恰逢建军90周年,观众对于民族文化的认同感在该部电影上得到了极大的共鸣。
在这里插入图片描述

图6-4 2015年至2019年总票房走势折线图

图6-4的折线图是通过统计2015年至2019年里评分排行靠前的电影清单中,电影总票房在这段时期里的走势。图中清晰地看到在2018年总票房达到顶峰,随之到了2019年出现下滑趋势。分析来看,2019年出现下滑原因主要有三个:1.许多热门的电影在2019年6月份的暑期阶段宣布了撤档,这对于原本期待影片上映的许多观众都没法到影院进行观看,影院票房的跌落十分明显。2.全国的银幕数量增速放缓。3.可能是热门头部电影的撤档,导致了影院观影的人数大幅度下降,再加上票房的上升,让许多观众望而止步。
在这里插入图片描述

图6-5 “演员劳模”词云图
图6-5的词云图是通过统计2015年至2019年里评分排行靠前的电影清单中,各个演员参演次数在总演员参演次数里,出现频率最高的“演员劳模”。图中清晰地看到道恩·强森这位演员近年来参演次数是最高的。笔者认为,国内外电影最大的差别就是演员的努力程度,近几年参演次数最高的道恩·强森,即使是参演次数很高,但是一年的录制的影视也没有多于五部,在保证影片质量同时也如此“高产”,可见的其投入的精力之多和时间分配的合理。一部作品的好坏和演员对作品的投入程度是离不开的。演员的付出对得起来之不易的作品剧本,只有这样才可以观众带来更好的作品。

四、总结

  电影发展的越来越迅速,如何在这块红海市场中分得一杯羹成为一个比较具有挑战性的问题,因此本文基于python爬虫制作了一个爬取电影票房网站的爬虫程序,成功地爬取到了电影票房的数据并且保存到了数据库中并进行分析,通过这种操作,使得电影的票房更加透明,清晰。本文基于Python语言,对电影票房网站进行信息数据爬取和分析,通过利用 Python 抓取电影票房数据内容,数据从MYSQL 数据库提取出来,进行有效的清洗,使用MySQL和pandas库等方式进行操作,使用web前端网页,让数据以柱状图、玫瑰图、折线图,以及词云图等方式展示在大众的眼前。以数据展示的结果,从而对某个时间段的电影票房的数据进行分析,进而了解大众专注热点趋势,进而分析了热点电影的基本情况。
  该系统利用了Python丰富的标准库以及快速开发的特长,其主要有这几个不错的优点:(1)该爬取系统对于使用Python程序比较陌生或者不熟悉的人来说也能很容易上手,只需要点击运行爬取程序里的get_data.py文件,爬取系统就会自动爬取数据,以完成复杂的爬取工作(2)采用相似度距离算法方式破解了猫眼电影网字体反爬,其亮点是方法新颖。(3)在Python程序里导入time方法,通过10秒的休眠时间,很大程度上降低了访问请求页面的频率。让服务器误以为是人为的操作,因此避免了被猫眼电影网站阻止或拒绝。(4)在爬虫程序里添加了头部信息headers文件,伪装给web服务器让其辨别为浏览器行为。方便后续的爬取工作正常进行。

六、 目录

目录
摘 要 1
Abstract 1
一、绪论 3
1.1研究背景 4
1.2研究现状 4
1.3研究方法 4
二、系统开发工具与相关技术 5
2.1 Python网络爬虫 5
2.2系统开发工具 5
2.2.1 pycharm工具 5
2.2.2 MySQL数据库 5
2.2.3 Hbuilder X工具 6
2.3系统后台技术 6
2.4 系统前端技术 6
三、系统分析 8
3.1 系统功能分析 8
3.2 系统功能性需求分析 10
3.2.1 系统用户功能性需求分析 10
3.2.2 系统管理员功能性需求分析 12
3.3 数据获取 14
3.4 数据分析 13
3.5 数据展示 13
四、系统设计 15
4.1文件结构图 15
4.1.1前端demo文件结构图 15
4.1.2后端爬虫系统文件结构图 15
4.2前端功能模块 16
4.3登录与注册模块设计 16
4.4数据库表设计 17
4.5数据展示模块设计 18
五、系统实现 20
5.1解决网站反爬机制 20
5.2 实现网络爬虫 23
5.2.1找出url变化规则并获取链接 26
5.2.2解析并获取网页数据 26
5.2.3将数据存储至数据库 27
5.3 登录注册模块实现 28
5.4 数据展示模块实现 28
六、 票房网站信息数据爬取结果及分析 32
6.1以2019年的票房榜单Top20为例分析 32
6.2结果分析 32
七、结论与建议 36
7.1结果分析 36
7.2不足点 36
7.3对未来的展望 37
参考文献 38
致 谢 39

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/477464.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

进程的终止

进程的退出(main函数的退出) main函数的返回值叫做进程的退出码,该退出码表示进程执行的情况。例如:一个函数返回一个值时,我们要知道函数的执行情况,可以去看函数的返回值。 例子: 1 #include…

Redis相关操作高阶篇--集群搭建

Redis相关操作大全一篇全搞定-CSDN博客 Redis集群 是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要seninel哨兵也能完成节点移除和故障转移的功能。需要将每个节点 设置成集群模式,这种集群模式没有中心节…

c++的学习之路:2、入门(1)

一、 C关键字 c的关键字要比c语言要多31个足足有63个,这里我只是了解了下每个有啥作用,具体使用方法以及更多的知识将在后续学习中,慢慢扩展使用,下方表格就是c的63个关键字 asmdoifreturntryautodoubleinlinetypedefdynamic_ca…

LeetCode题练习与总结:接雨水

一、题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3…

【MySQL】3.1MySQL索引的介绍

目录 一、索引的概念 数据库索引 索引的作用 索引的副作用 索引创建的原则(应用场景) 适合建立索引 二、索引的分类和创建 1.普通索引 创建普通索引 1.1直接创建 1.2修改表结构的方式创建普通索引 1.3创建表时创建普通索引 2.唯一索引 2.1…

如何在Android设备上运行深度网络

返回:OpenCV系列文章目录(持续更新中......) 上一篇: 下一篇: 介绍 在本教程中,您将了解如何使用 OpenCV 深度学习模块在 Android 设备上运行深度学习网络。教程是为 Android Studio 2022.2.1 编写的。…

实时数仓之实时数仓架构(Doris)

目前比较流行的实时数仓架构有两类,其中一类是以Flink+Doris为核心的实时数仓架构方案;另一类是以湖仓一体架构为核心的实时数仓架构方案。本文针对Flink+Doris架构进行介绍,这套架构的特点是组件涉及相对较少,架构简单,实时性更高,且易于Lambda架构实现,Doris本身可以支…

c++编写菱形图和计算100~200之间的素数

c编写菱形图 #include <stdio.h> int main() {int i,j,k,n;printf("请输入n:\n");scanf("%d",&n);for(i1;i<n;i){for(k1;k<n-i;k)printf(" ");for(j1;j<2*i-1;j)printf("*");printf("\n");}for(i1;i<…

【Charles如何对手机APP进行抓包和弱网测试】

一、Charles对APP抓包 1、前提条件&#xff1a; 1&#xff09;电脑上必须安装Charles工具&#xff0c;如没有安装可参考&#xff1a;【Charles抓包工具下载安装详细操作步骤】-CSDN博客 2&#xff09;手机和电脑必须在同一个局域网内&#xff08;连接同一个WiFi&#xff09;…

【java多线程】线程基础知识笔记

目录 1、多线程介绍 2、线程 3、线程的调度 4、线程的生命周期 5、线程的并行与并发 6、程的同步与异步 1、多线程介绍 多线程&#xff1a;指的是这个程序&#xff08;一个进程&#xff09;运行时产生了不止一个线程&#xff0c;是Java语言的重要特性&#xff0c;大量应用于…

[Linux开发工具]——gcc/g++的使用

Linux编译器——gcc/g的使用 一、快速认识gcc/g二、程序的翻译过程2.1 预处理&#xff08;.i文件&#xff09;2.2 编译&#xff08;.s文件&#xff09;2.3 汇编&#xff08;.o文件&#xff09;2.4 链接&#xff08;生成可执行文件或库文件&#xff09; 三、认识函数库3.1 静态库…

一大波新型勒索病毒来袭(更新)

目前勒索病毒仍然是全球最大的威胁&#xff0c;最近一年针对企业的勒索病毒攻击越来越多&#xff0c;大部分勒索病毒是无法解密的&#xff0c;一定要保持高度的重视&#xff0c;近期又有一大波新型勒索病毒来袭...... HildaCrypt勒索病毒 加密后的文件后缀名HCY&#xff0c;如…

qt 置顶窗口崩溃无法退出解决,停止运行快捷键设置

有时置顶窗口调试崩溃需要快捷键进行关闭&#xff0c;如下设置即可 这样就可以通过全局快捷键退出了&#xff0c;避免置顶崩溃无法关闭程序的问题。

《系统架构设计师教程(第2版)》第7章-系统架构设计基础知识-02-基于架构的软件开发方法

文章目录 1. 基于架构的软件设计&#xff08;ABSD&#xff09;1.1 概述1.2 ABSD方法的3个基础 2. 概念与术语2.1 设计元素2.2 视角与视图2.3 用例和质量场景 3. ABSD模型4. 体系结构需求4.1 需求获取4.2 标识构件4.3 架构需求评审 5. 体系结构设计5.1 体系结构设计5.2 软件体系…

8 克隆虚拟机

后期集群我们需要使用多台服务器&#xff0c;此处我们先克隆三台&#xff0c;master,slave01,slave02. 1.先关闭模版虚拟机。再选择 模版虚拟机hadoop100右击--》管理 --》克隆 2.下图中特别注意&#xff1a;建议使用集群的名字作为虚拟机名称。目前克隆主机master. 以上步骤完…

Django数据库查询

聚合查询 分组查询 F与Q查询 默认情况下,用Q包裹的两个条件,用逗号分割也是and关系 choices参数 只要某个字段的可能性是完全可以列举出来的,可以采取choices参数 该gender字段存的还是数字,但是如果数字在上面的元组列举范围内,该怎么获取对应的值,如果不在范围内,会怎…

Java学习笔记(20)

可变参数 输入的参数数量不确定 底层就是把输入的参数放进一个数组里 只能写一个可变参数如果还有其他形参&#xff0c;可变参数要放在最后写 可变参数在底层就是一个数组 Collections Addall shuffle 练习 package exercise;import java.util.ArrayList; import java.util.C…

Nacos详解,从安装到服务部署,及nginx反向代理

Nacos 安装 Windows安装 下载 在Nacos的GitHub页面&#xff0c;提供有下载链接&#xff0c;可以下载编译好的Nacos服务端或者源代码&#xff1a; GitHub主页&#xff1a;https://github.com/alibaba/nacos GitHub的Release下载页&#xff1a;https://github.com/alibaba/nacos…

更新数据库表中的数据

目录 update 加上各种限制条件 update update 表名set 列名1xx,列名2xx 指定更新某列数据如果不添加where子句,则为全列更新 也可以在原有基础上更新: 注意,mysql语法里不支持,必须是列名列名数值 加上各种限制条件 比如加上order by子句,where子句,limit等 这些条件对于up…

Flutter 运行 flutter doctor 命令长时间未响应

由于 Flutter 运行 flutter doctor 命令&#xff0c;会从 pub(https://pub.dev/ 类似于 Node.js 的 npm) 上进行资源的下载&#xff0c;如果没有配置国内镜像&#xff0c;可能会由于其服务器在国外导致资源下载慢或者下载不下来&#xff0c;所以出现了运行 flutter doctor 命令…