版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于豆瓣网电影数据的分析与可视化摘要随着我国互联网行业和数字电影行业的不断飞速发展,两者之间的合作联系越来越紧密。还陆续出现了许多基于互联网上的视频播放网站。用户想要在这些视频播放网站上找到自己喜欢的电影是一件很不容易的事,为了给用户的选择提供一个有用的参考,在庞大的网络电影库中快速找到自己真正喜欢的网络电影,本次课题从电影信息和短评信息两方面入手设计了豆瓣电影数据可视化系统。为了更好地对国内电影网站数据进行分析,本课题首先利用Python+Scrapy建立一套爬虫系统,收集豆瓣网的相关数据,通过Mysql数据库把获取到的电影名、电影导演、电影评分、电影类型、评论用户等数据进行持久化,为整个可视化系统提供了广泛而可靠的数据支持。最后使用Python提供的第三方库Matplotlib、Pands和Excel数据可视化工具进行数据清洗和以图形的形式直观地展示数据结果,并多角度分析电影的发展,得出相关结论。关键词:Scrapy;Python;第三方库;数据可视化;电影
AbstractWiththerapiddevelopmentofChina'sInternetindustryanddigitalfilmindustry,thecooperationbetweenthetwoismoreandmoreclose.TherearealsomanyInternet-basedvideoplaybackwebsites.Userswanttofindtheirfavoritemovieonthesevideoplaybacksiteisaverynoteasything,inordertogivetheuserchoicetoprovideausefulreference,inthehugenetworkmovielibraryquicklyfindtheirreallylikenetworkmovie,thesubjectfromthemovieinformationandshortreviewinformationdesignthedoubanmoviedatavisualizationsystem.Inordertobetteranalyzethedomesticfilmwebsitedata,thistopicfirstusePython+Scrapytoestablishacrawlersystem,collectrelevantdataofdouban,throughMysqldatabasetoobtainthemoviename,moviedirector,movierating,movietype,anduserdataforpersistent,providesextensiveandreliabledatasupportforthewholevisualizationsystem.Finally,thethird-partylibraryMatplotlib,PandsandExceldatavisualizationtoolsprovidedbyPythonwereusedtocleanthedataandintuitivelydisplaythedataresultsingraphicalform,andthedevelopmentofthefilmwasanalyzedfrommultipleanglestodrawrelevantconclusions.Keywords:Scrapy;Python;third-partylibrary;datavisualization;movie
目录TOC\o"1-3"\h\u1绪论 绪论第一章主要介绍了关于这个项目的一些基本介绍,包括有开发系统之前的要了解这个项目的背景和意义,然后关于这个课题的国内外的研究现状如何,然后介绍在开发这个系统的时候需要用到那些技术,本章主要介绍这些内容,本章的具体内容如下。1.1研究背景和意义近几年,在网络Python语言强势的发展背景下,数据思维及数据分析方法也逐渐被运用到各个领域当中,成为人们进行分析数据,传播内在规律的有效途径。如果我们只用人力来下载相关信息,不仅要花很多时间,而且得到的信息也很少。[1]网络爬虫是一个你可以自己获取网页的次序。它将从包含大量信息的信息库中提取有用的信息,爬虫在提取有用信息方面非常有效,这使得解决和分析数据成为现实。网络爬虫将继续提取网页上的数据,并将其存储在本地。通过分析和筛选,可以在缓存数据中创建准则并存储在系统中,方便用户查询和搜索。爬虫系统很好地提取了隐藏在大量数据中的信息,搜索效率很高,在很大程度上更好地利用了信息数据库。爬虫系统节省了大量的读取和存储数据的时间,协助研究人员以及储存众多信息,因此可以更加便捷地获取藏匿在数据之后的知识。现阶段,电影已经逐渐成为现代人们日常娱乐休闲消遣的重要生活方式之一,受到越来越多的年轻人的喜爱和追捧。根据初步统计,2016年中国电影门票市场已经实现各项重要指标的快速健康发展。在这个新的时代背景下,中国电影行业要想取得更大进步,就必然需要不断提升每部电影作品质量,挖掘广大观众对每部电影的总体评价和观众反馈的每部电影的相关数据,充分及时了解广大观众的观影需求,制作和推出更多受观众欢迎的好电影作品。从用户观众体验层面来说,网络上存在着大量的网络电影视频资源,用户想要在庞大的网络电影库中快速找到自己真正喜欢的网络电影比较困难。所以本次课题从豆瓣电影入手,分析电影评分与电影导演、电影评分与电影主演、电影评分与地区等之间的关系,以及用户对电影的短评数据,为用户提供更加详细的电影观看建议与电影推荐,为电影行业提供可用的观众满意度数据等等。1.2国内外研究现状在国内,很多平台都会使用大数据来研究电影相关信息进而预测票房和电影口碑,致力于提供给观众更加优质的电影产品。2010年,惠普实验室分析了推特上的电影数据实现票房预测。Python作为搜索引擎技术组成部分之一,自九十年代初诞生了第一个网络爬虫以来,Python技术已经经过了20多年的发展,经过这么多年的发展,Python技术也趋于成熟,逐渐覆盖了网页开发、游戏开发、爬虫分析可视化、脚本开发等等专业领域。[5]并通过其简单易懂、代码编写效率高的特点,成为目前最为火热的开发编程语言,也正是其应用广泛,上手容易,语法强大,代码可读性强的特点,受到了很多人的喜爱,让很多人爱不释手。同时,由于不同的人对于数据爬取内容的差异,常常会产生不同的需求,因此爬虫主要可以分为以下两种:通用爬虫:通用爬虫其实很简单,它的作用就是将网络上的网页下载下来,保存到本地,其实就是生成一个副本,作为网页的备份。所以通用搜索一般得到的都是网页,对于用户来说,网页的内容十之八九都是没用的,要的只是网页中的某些特定的信息。所以就有了我们第二种爬虫方法。聚焦爬虫:聚焦爬虫是比通用爬虫更加复杂一点,它不同于通用爬虫,通用爬虫是将网页保存到本地,但是聚焦爬虫,它不会将整个网页爬取下来,它会筛选得到网页中我们所需要的东西,而筛选的条件规则是由我们自己定义的,相比通用爬虫,聚焦爬虫它做的工作更多,但是得到的数据更加符合我们的要求,本文所实现的爬虫,就是通过聚焦爬虫所实现的。自1990年代以来,许多计算机工作者一直从专注于相关领域的研发工作。从当前实际看,爬虫科技日渐成熟。国内有许多研究网络爬虫系统的组织和学者,如杜凤媛设计实现的一套分布式自定义集合网络爬虫系统,它可以一次准确识别大量各种网页元素,能够形成提取规则,而且可以通过不同的网页情况以信息采集方式对场景化进行适应,从而对数据进校高效处理。用户可以根据自己的需求可视化地编辑爬虫任务脚本,自动完成爬虫数据的采集。还有一个潘剑锋设计的主题爬虫系统,从结构化数据中提取,计算网页结构相似度,去噪文本,中文分词,主题关键词抽取等五个方面对主题爬虫的工作流程进行了设计和研究,介绍了网页分类的基本步骤,重点分析了朴素贝叶斯分类算法、TF-IDF算法和余弦相似度的基本工作原理。[11]在实际对客户查询要求进行解决的基础上,有的学者对网络爬虫定义进行了研究,主要数基于信息抓取的考虑,采用特征并不明显的特定爬虫。网络爬虫技术旨在为在互联网上搜索用户提供后续搜索和推荐服务。国内外的大型搜索引擎公司每天都使用自己的爬虫程序在互联网上爬取大量信息。除了搜索引擎公司的闭源爬虫程序之外,互联网上还有许多开放源爬虫技术[12]。在Scrapy爬虫框架中主要采用的语言是Python。[13]而该框架主要依赖于Python事件进行框架驱动,能够让操作人员非常简便地运用爬虫对相关模块进行研发,而通过不同页面的抓取,以结构数据进行显现,通过多样的配置,不断增加定义的中间软件,通过链接和进程以及代理去抓取、测试以及进行并发和速度控制。基于Scrapy框架细节以及爬虫策略的深入研究,能够对爬取策略与架构进行深入整合分析,在优化系统中,可以让多个环节环环相连。[14]Scrapy具有更成熟的文档和扩展名,因此实现预期目标进行开发相对方便。西方学者比国内学者更早使用大数据的方法对电影领域进行分析。其中最有代表性的是澳洲学者巴里·索特。[15]索特对影片的模式进行了十分精确地更改:远景,中景,近摄,长镜头,短镜头,动作镜头等等。他通过计算这些场景的数据判断出导演或时代的风格。1.3系统主要内容及论文结构安排1.3.1系统主要内容这次课题的主要内容是通过Python3+Scrapy框架爬取所需要的1000多个数据,并全部存入Mysql,然后对存入Mysql中的数据进行数据清洗与提取成Csv文件、Excel数据表和文本文件等等。通过Python第三方库Matplotlib等对Csv文件或者文本文件中的内容进行分析,或将Excel数据表用Excel可视化工具进行分析。本次课题主要研究高评分豆瓣电影之间的关系,能够带给观众更方便的电影观看选择,以及研究观众在豆瓣电影评论区的短评内容,带给电影制作方更直观的观众观看后的感想与体会1.3.2论文结构安排本文共分为7个章节,具体内容和操作顺序如下:第一章是引言,此章节主要阐述了本次研究课题的背景、开发的意义和国内外的现状。第二章是相关技术和开发环境。本章介绍了本次课题所采用的各种相关开发技术和系统开发环境。第三章是可行性与需求分析,此章节介绍了本次课题的技术上和经济上的可行性以及需求分析。第四章是数据可视化总体设计,此章节介绍了系统的简单架构组成、主要的功能模块、数据库表的设计和连接。第五章是数据可视化系统实现,此章节介绍了如何实现本次课题的各个功能模块。第六章是数据可视化结果展示,此章节介绍了数据可视化的结果展示。第七章是系统测试,此章节介绍了系统用例测试。
2相关技术与开发环境在进行设计的时候,需要先了解需要掌握相关的技术才可以,然后还要确定使用的开发环境,这里采用了Pycharm来作为编译代码的开发工具。2.1相关技术简介2.1.1Python简介1991年,吉多·范罗苏姆开发出了Python脚本语言。Python脚本语言是一个具有良好的解释性、编译性、互动性等一系列特性的面向对象编程脚本语言。它最大的特点和优势之一是有丰富的标准库,Python提供的第三方库主要可以实现web软件开发、图形绘制等多个功能。比较著名的库有:Django、Flask、Tornado、Matplotlib、SciPy、NumPy、PyQt、WxPython、PIL、TensorFlow等。所以Python可以让用户在编程的过程中用最少的代码来表达自己的想法。2.1.2XPath简介Xpath编程语言被设计以来就可以提供给xslt、xquery以及xpointery使用。Xpath提供很多标准库函数。Xpath的内置函数就有100个。其中字符串函数主要有string(object)、concat(string1,string2)、format-number(num)等;布尔函数主要有true()、false()、lang(string)等;数字函数主要有number(object)、floor(number)、round(number)。2.1.3Scrapy框架简介Scrapy框架是适用于Python的网站数据爬虫框架。该框架常常被用在数据采集、数据存储、数据清洗等程序。利用Scrapy框架可以快速实现一个网站爬虫,抓取指定网站内容。尽管Scrapy的框架最初是为了它被用来在网络上抓取,但它也被认为是很容易通过访问api提取结构性数据。Srapy框架文件具有以下6个主要的文件目录结构:items、middlewares、pipelines、settings、spiders、scrapy.cfg。Scrapy的架构图如图2-1所示。图2-1scrapy架构图(绿线是数据流向)2.1.4Matplotlib简介Matplotlib库是一个基于Python众多第三方绘图包中比较热门的一个。是一个提供数据绘图功能的第三方绘图库,pyplot子库把构造数据绘图所需对象的过程封装在一个函数中,可以用来快速实现各种数据显示图形绘图。使用Matplotlib库。开发人员仅仅需要几行简略的代码,便能够快速地生成图表。一般可以用来绘制条形图、词云图、雷达图等等。2.1.5Pandas简介最开始,因为Pandas是一个金融数据分析工具,Pandas工具包在时间序列数据分析中具有较强的数据分析功能和支持。使用爬虫爬取到的数据会存在大量的噪音,比如空格、重复值等等。因此需要对原始数据进行进一步的清洗。清洗后的数据才是我们需要分析的数据。Python中的Pandas库可以对采集到的数据进行统计与处理进行。将爬取得数据组合成DataFrame表格格式。2.2开发环境2.2.1PyCharm简介PyCharm是个功能强大的IDE,它已经发展成为一个强大的工具。专业软件开发人员和刚开始学习的开发人员都可以安全使用。Pycharm使用的PEP8标准是Python规范。对于初学者,Pycharm为autopep8提供了这个工具。只需要在环境中安装此工具,就可以解决代码不规范问题。同时,Pycharm还拥有断点调试功能,在程序debug时,程序就会在添加了断点标记的行停下来。Pycharm还拥有大量的快捷键,除了我们平时经常使用的那些,它还有些编码时能够加快编码速度的快捷键,比如alt+insert(自动生成代码)、ctrl+alt+l(代码格式化)等等。2.2.2Mysql简介Mysql现在属于Oracle公司。Mysql数据库也是以c/s结构为基础的数据库软件,访问者必须通过客户端进行访问。Mysql数据库可以被永久性地存储在一个磁盘中。Mysql使用的是sql语言,sql语言是访问数据库最常用的标准化语言,可以很好地实现对用户数据库的查询。Mysql数据库是一种支持关联的数据库系统,关联的数据库将被所有用户使用的数据存储在不同的数据库表中。Mysql也支持大型的数据库。2.3本章小结本章主要介绍研究过程使用的相关技术和开发环境,相关技术主要包括了Python,以及Python相关的库,还有XPath和爬虫框架Scrapy框架的介绍。开发环境则是PyCharm和MySql。
3可行性与需求分析想要写好系统的功能,就要提前对系统的所有功能都设计好,思路清晰,考虑能预见的所有情况,也要好好考虑。通过对功能的设计,让系统的结构更加合理。3.1可行性分析3.1.1技术可行性数据可视化分析科技是利用多种可视化界面和一体化分析数据理论的方法,帮企业和用户快速解读复杂数据的分析技术。可详细分为数据采集、数据持久化、数据清洗、数据可视化4个步骤。数据采集的执行过程可分为:确定获取内容、分析网页布局、下载Html页面、解析页面内容、存入数据库。解析网页内容有Xpath和正则表达式两种方法。数据持久化可以通过Python中的Pymysql模块将获取到的数据存入Mysql完成数据持久化。数据清洗与提取可以使用Pandas库可以对采集到的数据进行统计与处理。数据可视化可以通过Excel工具或者第三方库Matplotlib进行可视化分析。3.1.2经济可行性在互联网大数据的背景下,可以使用大数据对于电影内容进行可视化的分析。可以通过数据采集,发现观众的电影喜好内容是什么,把对应的电影推荐给观众,实现大数据营销和预测电影票房。还可以把一部热门电影的几千万条用户评论数据进行搜集、整理,就可以通过寻找筛选出其中有利的一些东西做成电影品牌,这样可以精细地理解用户的电影爱好,对电影下一步的创作和发展具有很好的指导性。3.1.3操作可行性本系统界面清晰易懂,功能简单,页面响应速度快。能够让用户能快速了解系统。只要你了解过操作系统用户都可以使用这个程序,它的可操作性是其他替代软件无法比拟的。可以让用户简单地看到电影的数据,电影的各个数据非常简单的展示。因此,该系统具有很大的可操作性。3.2需求分析3.2.1系统功能需求分析系统的使用者主要是影评人员,对系统的可视化模块进行查看,将数据汇报给片方,片方根据影评人员汇报的数据对电影信息进行相应的处理。本系统主要实现了数据采集模块和可视化功能模块。如图3-1系统用例图所示。图3-1系统用例图3.2.2各功能用例分析(1)数据采集用例说明:数据获取用例详细描述如下表3-1所示。表3-1数据采集用例描述用例条目描述用例名称数据采集功能主要业务参与者管理员其他参与者无描述进行需要数据的采集前置条件无后置条件将需要的数据存入数据库触发条件输入要获取的数据管理员输入要获取的信息结束获取成功或者失败实现约束和说明输入的必须是电影的信息待解决问题无电影信息分析用例说明:电影信息分析用例详细描述如下表3-2所示。表3-2电影信息分析用例描述用例条目描述用例名称电影信息分析主要业务参与者管理员其他参与者无描述对电影信息的进行分析,以柱状图的形式展示出来前置条件数据预处理后置条件柱状图展示触发条件数据可视化图例基本流程进行数据可视化图例展示图片展示替代流程无结束图片成功展示或者失败实现约束和说明数据已经存入数据库待解决问题无短评信息分析用例说明:短评信息分析用例详细描述如下表3-3所示。表3-3短评信息分析用例描述用例条目描述用例名称短评信息分析主要业务参与者管理员其他参与者无描述对电影信息的进行分析,以柱状图的形式展示出来前置条件数据预处理后置条件柱状图展示触发条件数据可视化图例基本流程进行数据可视化图例展示图片展示替代流程无结束图片成功展示或者失败实现约束和说明数据已经存入数据库待解决问题无3.2.3可视化功能性分析一个完整的数据可视化开发过程需要经过数据采集,数据持久化,数据清洗,数据可视化这4个阶段。数据可视化的主要实现功能如下:(1)实现数据采集。要实现电影相关数据的完整采集,电影相关数据主要是电影数据和短评数据。(2)模拟浏览器。豆瓣网站存在反爬虫机制,想要通过python爬虫收集数据而不被豆瓣网站服务器拒绝访问。所以应该通过设置RequestHeaders中的User-Agent模拟浏览器来进行访问。(3)模拟Ajax请求,豆瓣网站中有些页面是异步加载形式的,所以应通过抓包得到RequestURL返回json数据,模拟Ajax请求通过规律循环爬取页面信息。(4)连接数据库,要实现数据持久化,可以通过Python的连接MySQL服务器的库pymysql连接数据库,将采集到的数据存入数据库[2]。就可以永久存储到本地磁盘。(5)实现了电影数据的预处理。本文从电影信息和短评信息两个方面对数据进行分析,实现了对电影的多角度数据清洗。分析内容包括电影的电影评分,电影的主演,电影的类型,短评的评分等等。(6)绘制图表。需要在数据清洗的前提下,通过python的第三方库或者Excel数据可视化工具绘制图像直观地展现出数据可视化结果,实现多个维度的对电影数据进行可视化分析。3.2.4可视化非功能性分析(1)安全性:由于我们爬取的是豆瓣网的用户评论数据,在访问过程中会产生大量的个人隐私信息,包括个人信息和网络安全信息。所以我们在编程时生成的数据要及时销毁,防止用户信息泄露。(2)易用性:易学习,易上手;(3)可靠性:接收数据准确无丢失。3.3本章小结本章主要介绍了本次课题的可行性分析和需求分析。可行性分析为技术可行性分析、经济可行性分析和操作可行性分析三种。而需求分析则是可视化功能分析,还有以安全性,易用性,可靠性的非功能分析。
4数据可视化总体设计系统总体设计与实现,先进行总体架构设计,并对数据库进行创建,对数据表进行创建,连接数据库准备工作,使各个模块成功连接起来。4.1数据可视化架构设计本次系统主要分为数据采集、数据库和数据可视化。数据采集主要采用Scrapy框架,主要通过豆瓣网站的网页URL采集豆瓣电影网站上的电影信息和短评文本等。数据库主要采用Mysql关系型数据库,主要存储从豆瓣电影数据平台采集的电影信息、短评文本等[3]。数据可视化主要采用Matplotlib库和数据可视化工具来进行分析并输出成图表。数据可视化系统的简单架构如图4-1所示。图4-1数据可视化系统的简单架构图4.2系统功能模块设计该系统可以大概分为2个功能模块:数据采集和数据可视化。其中数据采集功能模块,主要是负责从网上自动采集数据并直接存入数据库。采用的当下热门的Scrapy框架和Mysql。数据可视化功能模块,主要负责将清洗后的数据通过图表方式展示出来。采用的当下流行的第三方库Matplotlib、Jieba等。系统功能结构如图4-2所示。图4-2系统功能结构图4.2.1数据采集功能模块设计此模块主要采集所需的电影数据,并对采集到的数据进行清洗和存储。(1)数据采集类型本次设计的爬虫系统主要收集豆瓣电影网站上的两个电影数据类型,第一个数据类型是电影的基本信息包括电影名、电影Id、豆瓣评分、主演、导演、简介等。电影基本信息采集结果如图4-3所示。图4-3电影基本信息采集第二个数据类型是短评信息包括短评内容、评论时间、短评用户、短评评分等。短评信息采集如图4-4所示。图4-4短评信息采集因为要采集短评信息就需要先采集电影的基本信息,从采集到的电影基本信息中提取出电影ID字段构造出短评信息URL采集短评信息,这两类数据有一个先后的采集顺序[4]。(2)数据的采集电影的基本信息和短评信息虽然有一个先后的数据采集顺序,但是数据采集的原理是差不多相同的,在这里主要介绍是如何进行电影数据的采集。本系统电影数据采集的功能主要采用了Scrapy爬虫框架的方法来实现,该爬虫框架的基本核心功能就是Scrapy的调度器,爬虫的调度端主要功能是用来控制启动网络爬虫、监视网络爬虫的运行状况或者是停止网络爬虫[5]。调度器从入口URL开始,并按照调度器中定义的电影数据字段的链接地址顺序使用XPath或Re正则表达式获取更多电影页面源链接和数据。(3)数据的存储网络爬虫从网页上采集来的数据是有一个时效性,为了让爬取到的信息永久都存在,就需要对数据进行数据持久性操作也就是数据存储。目前数据存储方式有文本文件、Excel表、数据库等。为了给后续的数据可视化提供数据支持,此次系统主要采用Mysql数据库进行数据存储。(4)数据的清洗在网页上采集的电影数据不能直接拿来使用,可能存在空值、无效值、错误值等。所以我们需要及时处理这些杂乱的数据,将其转化成可以直接进行计算分析的电影数据[6]。数据清洗就是对采集到的电影基本信息和短评信息进行缺失值处理、空值处理、去重处理等等。为了方便进行后续的数据可视化,需要处理部分列的电影原始数据,比如讲电影类型这种原始数据通过关键字“/”分列后再近些汇总处理。4.2.2数据可视化功能模块设计数据可视化功能模块主要通过图表显示数据清洗后的数据信息。例如,我们可以对短评的评分分布和内容进行统计分析,最后将分析结果绘制成相应的图表进行展示。数据采集功能模块是将采集到的数据存储到本地关系数据库Mysql中,然后对数据库中的数据进行清理。数据可视化功能模块主要是读取本地Mysql数据库的数据或者是清洗后存入本地文档中的文本文件和Excel表,然后利用第三方库或者Excel数据可视化工具将结果以图表的形式展示出来。该模块主要包括两个子模块:电影基本信息的统计分析和对短评信息的统计分析。其中每个子模块包含多种功能。电影基本信息的统计分析模块有4个功能:不同类型的电影数量分析功能、演员的主演次数分析功能、豆瓣评分集中趋势分析功能、电影的评分变化分析功能。短评信息的统计分析模块有关键词分析功能和短评评分占比的分析功能。(1)电影短评分析。电影的短评是用户较为关注的一个指标,由于豆瓣对电影的评论把控要求特别严格,相比一些其他的互联网视频网站,豆瓣的短评具有一定的说服力[7],本节主要从短评关键字进行分析。(2)电影基本信息分析。从电影的基本信息角度分析中国电影总体的作品质量和满意度等等。4.3时序图设计为了直观的了解各个模块的是如何运转,进行了时序图的创建。如图4-5所示。图4-5对象的实体关系图4.4系统数据库设计为了实现数据的持久化,本系统对4.2.1小节的数据存储功能进行了系统数据库设计。4.4.1数据库概念结构设计系统的数据库的对象主要包括电影基本信息,短评信息。电影对象是指收集到的电影基本数据。电影对象的属性包括电影id、电影名称、简介、制片地区、主演、类型、豆瓣评分等。短评对象是指收集到的每部电影的短评信息,短评对象包含的属性是短评用户、短评文本、评论时间、短评评分等。电影与短评之间存在着1对多的关系,一部电影能够拥有多条短评,单身一个短评只能被一部电影所拥有[8]。对象的实体关系图如图4-6所示。图4-6对象的实体关系图4.4.2数据库逻辑结构设计根据数据库概念结构设计,现设计以下数据库表。(1)《疯狂动物城》短评数据表存放爬取到的《疯狂动物城》这部电影的电影id、短评用户名、短评评论的时间、短评评分、短评的内容。如表5.1所示。表5.1《疯狂动物城》短评数据表列名数据类型长度允许空是否主键说明movie_idInt11否是电影idPL_namevarchar255否否短评用户名Pl_timevarchar255否否短评评论时间PL_numbervarchar255否否短评评分PL_mattervarchar255否否短评内容(2)中国大陆最近热门电影信息表存放爬取到的电影id、电影的名称、电影的评分、电影的导演名称、电影的主演、电影的类型、电影的制片地区、电影的语言类型、电影的简介。如表5.2所示。表5.2中国大陆最近热门电影信息表列名数据类型长度允许空是否主键说明movie_idInt11否是电影idmovie_namevarchar255否否电影名称movie_scorevarchar255否否电影的评分movie_dirvarchar255否否电影导演名称movie_actvarchar255否否电影的主演movie_typevarchar255否否电影的类型movie_areasvarchar255否否电影的制片地区movie_lanvarchar255否否电影的语言类型movie_briefvarchar255否否电影的简介4.5本章小结本章主要介绍了本次课题数据可视化系统的基础架构设计,系统主要功能模块设计,主要模块是数据采集功能模块,可视化功能模块,最后,怎么能忘记数据库的设计,包括数据库的概念设计和逻辑结构设计。
5数据可视化系统实现5.1数据采集功能实现电影的数据采集主要使用基于Python开发的爬虫轻量级框架Scrapy框架实现数据采集[9]。因为这两类数据有一个采集顺序。在实际采集的过程中,先要采集电影的基本信息,存入数据库电影基本信息表中。再根据电影基本信息表中的电影的Id构造出电影短评的URL用来采集指定电影的前200个短评信息,存入数据库短评信息表中。上述关于存入数据库的关键代码如下图所示:数据采集流程图如5-1所示。图5-1数据采集流程图虽然这两种数据采集的顺序不同,但采集原理是相同的,本文主要对电影基本信息的采集实现做了具体的介绍。因为豆瓣电影网站是异步加载的,所以需要使用分页请求来抓取电影数据页面的URL。先获取电影分类页URL,然后通过遍历分类页URL循环解析电影分类页面中的电影详情URL和一些基本信息,之后进入电影详情URL下载并解析出想要的电影数[10]。关键代码如下:豆瓣电影平台的电影资源显示在异步加载的分类页面上,以每页增加20部电影的数量展示在页面上,因此用豆瓣的分类页抓包返回的Requesturl作为Base_url并且每以20递增构造新的电影分类页URL。为了防止豆瓣网站的反爬虫机制,采取模拟浏览器登录,关键代码如下:电影数据页面主要通过xpath字符串或者re正则式匹配HTML中对应字段消息[11]。网页解析关键代码如图所示:数据解析之后就是数据存储阶段,数据存储阶段是通过Pymysql库连接到数据库。电影数据存储代码如图所示:在数据存储之后,最后一个过程是数据清理,主要是通过Pandas检查数据,重复值检查,空值检查等等。电影数据清洗代码如图所示:5.2数据可视化功能实现数据可视化功能模块主要是对电影基本信息和短评信息进行统计分析,并以图表的方式进行显示。目前常用的可视化方法有两种:分别是数据可视化软件和可以进行数据可视化的第三方库。本系统的数据可视化模块利用数据可视化软件Excel+第三方库matplotlib进行可视化展示。中国大陆最近热门电影作品豆瓣评分集中趋势直方图如图6.4所示。该模块的实现原理都一样,现主要针对从豆瓣评分集中趋势的展示实现做一个介绍。豆瓣评分集中趋势用直方图展示,横坐标是豆瓣评分,评分区间是0-10。纵坐标是相同评分的影片数量。第一使用pandas的read_csv读入csv文件,第二配置中文字体和修改字体,避免出现乱码现象。第三创建画布。最后绘制直方图。5.3本章小结本章主要介绍了本次课题数据可视化系统实现环境,数据采集功能实现,数据可视化分析功能实现。具体表现为各个模块的代码展示,以及设计思路。
6数据可视化结果展示随着电影行业的飞速发展,越来越多的电影公司开始希望通过用户对不同电影的评分变化来了解用户想看电影的需求和喜好。电影评分主要是观众对于电影从期待和接受的角度对于电影内容进行的一种评价和回馈,一方面是取决于电影本身质量,另一方面则是取决于观众本身对电影的这种接受需求,即电影在多大程度上与电影对于观众的这种期待以及视域已经达到了融合[12]。本次课题主要从以下几点来为用户提供详细的观看建议与推荐,为电影行业制片人等提供可用的观众喜好数据。第一,从关键词分析观众看点。第二,从短评评分占比角度分析用户对电影的接受程度。第三,从不同电影的评分变化角度分析最近热门中国大陆作品质量。第四,从豆瓣评分集中趋势的角度分析最近热门中国大陆作品质量。第五,从演员担任不同电影的主演次数的角度分析观众接受度。最后,从不同类型的电影数量角度分析观众喜欢的电影类型。6.1关键词分析观众看点《疯狂动物城》短评文本词云图如图6.1所示。从图6.1可知,这部影片是动画类型。影片角色有狐狸、兔子、树懒等。图中存在“最佳”、“好看”、“不错”、“细节”、“可以”等“关键字”,可以分析出这部影片作品质量比较高,观众对这部影片持支持态度。喜欢动画类型但是找不到好电影的就可以尝试观看该影片,电影制片方也能借此分析出观众们喜欢的看点是什么。图6.1《疯狂动物城》短评文本词云图6.2从豆瓣评分趋势的角度分析最近热门中国大陆作品质量横坐标是豆瓣评分,评分区间是0-10。纵坐标是相同评分的影片数量。中国大陆最近热门电影作品豆瓣评分集中趋势直方图如图6-2所示。图6-2中国大陆Top250部电影作品豆瓣评分集中趋势直方图从图6.2可知,中国大陆Top250部电影的豆瓣评分集中在8-9分之间,其中8.8分最多,8.7分其次。低于8.4分的作品很少,但是高于9分左右的作品也比较少。8-9分之间有道“分水岭”,影片数量呈悬崖式下跌。可以分析出“分水岭”右边的电影作品是特别优秀的作品,看过的基本都打了高分的那种。而左边则是比较优秀或者不优秀的作品,能够打动大部分人却很难获得所有看过这部电影的人的赞赏。中国大陆的电影还存在上升空间,希望能够跨过“分水岭”,带给观众更多的精品作品。6.3从不同类型的电影数量角度分析观众喜欢的电影类型中国大陆电影的类型信息有19种,我比较喜欢观看的类型有爱情、动画、动作、犯罪、古装、家庭、剧情、真人秀等,TOP250电影比较如图6.3所示。从图6.3可知,剧情类型的电影最受欢迎,第二受欢迎的是喜剧类型。第三是动作类型,有117部。受众比较少的电影类型是传记、犯罪、古装、家庭、音乐、惊悚等等。可以分析出电影市场的剧情类型的电影需求量最高,因为国人受众最多的电影类型是剧情。图6-3中国大陆最近热门不同类型的电影数量比较6.4电影评价人数在豆瓣上,评价人数在5000-10000的最多,其次是10000-15000人次,最低是1000人次。从数据来看,在豆瓣进行电影评价的人较多,总人数超过了150000人次。6.5本章小结本章主要介绍了对电影基本信息和短评信息的分析结果展示。具体为以关键词分析观众看点展示的词云,豆瓣评分趋势的分布图,电影评价人数的条形图。
7系统测试本章对豆瓣电影数据分析可视化进行测试,阐述了初步测试的思路、过程、分析、结果。来测试项目数据的精准性,也能完善项目功能的数据使用并得到结果。系统写实的重要性在于,它可以展示出系统各个功能的流畅性,降低系统漏洞风险。此环节会对系统的各个功能进行测试,用于保证系统的可用性。7.1系统测试方案设计自动化测试的最关键目的是在系统应用的整个过程中更好地减少不准确性和系统漏洞。对于用户来说,系统的不正确或系统漏洞将影响用户的体验。在特定测试的整个过程中,有必要以用户的身份进行自动化测试。可以选择测试平台以发现系统中的系统漏洞,并且可以任意选择总体目标用户进行测试。只有这样才能确保系统的高质量运行。因此,我对该系统的测试为黑盒测试。7.2系统测试用例为了让所有的用户都能方便快捷地使用本系统,并且让系统能够出现尽可能少的问题,减少错误的发生。我将从数据获取,不同电影信息分析,不同影评分析等系统用例来测试系统的功能,考虑多种情况对系统功能的影响。7.2.1数据采集测试该测试是对数据采集测试的检验,在进行数据采集时判断,如果采集的不是电影数据,电影信息不存在,页码超过已有页码或者数据已经存入在了数据库当中,系统就会提示,数据保存失败,只有数据库中,未拥有该数据,才会成功爬取,显示数据保存成功。(1)测试序号:01;(2)目的:确保数据获取功能完好;(3)前提:存入豆瓣电影网电影数据;(4)测试方法:手动测试。(5)测试结果:测试结果符合预期结果;数据采集测试用例如表7-1所示;表7-1数据采集测试用例表序号输入预期结果实际结果测试结果1获取豆瓣电影网的电影基本信息获取排名前250的电影中文名称,评分等信息获取排名前250的电影中文名称,评分等信息通过2获取豆瓣电影网的电影其他信息获取排名前250的电影导演,主演等信息获取排名前250的电影导演,主演等信息通过7.2.2评价人数和情感分析测试该测试是对评价人数和情感分析的测试,在进行不同评价人数和情感分析测试时,只有数据存入在数据库当中。符合条件的,才会进行可视化图例。(1)测试序号:02;(2)目的:确保图例能成功显示;(3)前提:所有电影数据已经全部存入数据库中;(4)测试方法:手动测试。(5)测试结果:测试结果符合预期结果;评价人数和情感分析测试用例如表7-2所示;表7-2评价人数和情感分析测试用例表序号输入预期结果实际结果测试结果1评价人数评价人数对比柱状图评价人数对比柱状图通过2情感分析情感分析占比扇形图情感分析占比扇形图通过7.2.3评分和词云分析测试该测试是对评价人数和情感分析的测试,在进行评分和词云分析测试时,只有数据存入在数据库当中。符合条件的,符合要求低,才会进行对应的可视化图例展示。(1)测试序号:03;(2)目的:确保图例能成功显示;(3)前提:所有电影数据已经全部存入数据库中;(4)测试方法:手动测试。(5)测试结果:测试结果符合预期结果;评分和词语测试用例如表7-2所示;表7-2评分和词云分析测试用例表序号输入预期结果实际结果测试结果1评分评分分布柱状图评分分布柱状图通过2词云词云图例展示词云图例展示通过7.3本章小结本章主要是对功能的测试,在整个功能测试过程中,所有的功能都达到了预期的效果,可以说,功能测试非常成功。在进行这3次功能测试当中,图例都很完美的展现了出来,给观看一个良好的观看体验。
结论在本次课题,我使用Python3+Scrapy获取数据,使用Pymysql+Mysql存储数据,使用Pandas清洗数据,Python第三方库Matplotlib和Excel数据可视化分析工具进行了数据的可视化。本文对《疯狂动物城》批注文本进行了直观的云图分析;从不同电影的评分变化角度分析最近热门中国大陆作品质量;从短评评分占比角度分析用户对《疯狂动物城》这部电影的接受程度;从豆瓣评分集中趋势的角度分析最近热门中国大陆作品质量;从演员担任不同电影的主演次数的角度分析观众接受度;从不同类型的电影数量角度分析观众喜欢的电影类型。在这个大数据时代,电影大数据分析早已经开始取得非常不错的实际应用。我们可以快速地了解到和找到各种电影统计数据,如:电影票房的排行、观影的人群年龄和性别的分布、电影的评价等级、长影评和短影评等等使用影评数据能够反映观众对电影最直接的感受和评价,而最重要的是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论