丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
进入21世纪,特别是第二个十年,世界互联网取得了惊人的快速发展。根据分析师玛丽·米克尔(MaryMikel)2016年发布的一份互联网趋势报告,到2016年年中,全球互联网用户超过30亿,约占全球总人口的40%,中国超过6.9亿互联网用户维持了多年来全球最大的互联网用户市场。互联网的快速发展,同时互联网产生的数据量也随着互联网用户的不断涌入而产生了爆炸性的增长,世界进入了"大数据"时代[1][2]。欧洲最大的电子优惠券应用提供商Vouchercloud在2015年发布的一份报告显示,每天在互联网上生成的数据高达2.5万亿字节(五分之一字节),这些数据可以充满超过1亿张蓝光光盘25GB容量)。因此,如何在互联网上查询海量信息中的有价值数据,成为一个需要解决的问题。
在互联网发展初期,网站相对较少,信息查找比较容易。然而伴随互联网爆炸性的发展,普通网络用户想找到所需的资料简直如同大海捞针,这时为满足大众信息检索需求的专业搜索网站便应运而生了,人们对信息的获取逐渐被网络所取代。目前,人们大多通过搜索引擎获得有用的信息,因此,搜索引擎技术的发展将直接影响人们获得所需信息的速度和质量。
随着网络信息资源的指数化增长和网络信息资源的动态变化,传统搜索引擎提供的信息检索服务已不能满足人们对个性化服务日益增长的需求,正面临着巨大的挑战。以什么样的网络接入策略,提高搜索效率,已成为近年来专业搜索引擎网络爬虫研究的主要问题之一[9][10][11]。
网络爬虫是搜索引擎的重要组成部分,目前比较流行的搜索引擎有百度、谷歌、雅虎、必应等,可以说没有网络爬虫的存在,就可能没有搜索引擎的存在,出于商业保密的考虑,各种搜索引擎使用的爬虫系统的技术内部人员一般不公开,现有文献仅限于摘要介绍。在很大程度上,Web搜索引擎、数字图书馆和其他Web应用都依赖于网络爬虫获取的HTML文档信息。例如为了提供多种搜索引擎服务,谷歌、雅虎和MSN的爬虫定期遍历数十亿网页,网络购物智能代理通过价格比较未用户推荐价格优惠的产品[12][13]。
本文通过爬取影视数据通过分析让为用户观影时提供决策支持。
本文旨在通过开发一套电影数据分析系统,提供基于数据分析的决策支持。在第一章中,介绍了电影市场的现状以及电影数据分析对于电影产业的重要性,并对国内外现状进行了总结。第二章主要介绍了开发该系统所用到的技术和运行环境,包括开发环境搭建和各种第三方库的应用。第三章通过可行性分析和系统需求分析来明确该系统的设计目标和技术要求,包括易用性、可移植性和系统观感需求等。第四章介绍了该系统的实现过程和各项功能的测试情况,包括数据爬取、数据分析、数据存储和数据可视化等。最后,在第五章中对本研究进行了总结,并展望了未来该系统的发展方向。
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python语言是人工智能和大数据的标准语言,随着云计算、大数据、物联网、人工智能、区块链等技术被广泛应用于各行各业。自20世纪90年代Python语言公开发布以来,由于其语法简洁、类库丰富,适用于快速开发活动,已经成为当下较为流行的一种脚本语言。Python语言具有强大的数据分析功能,可以应用到网站开发、图像处理、数据统计和可视化表达等多个领域。
2.安装python,并配置环境变量。
1.requests
requests是Python编程语言中一个用于发送HTTP请求的第三方库,它可以让程序通过HTTP协议向远程服务器发送请求,获取数据并对其进行处理。requests库提供了一个简单且易于使用的API,使得HTTP请求和响应的处理变得非常容易。
使用requests库,你可以很方便地发送HTTP请求,例如GET、POST、PUT、DELETE等请求方法,还可以添加HTTP头部、查询字符串、cookies等内容。requests库还支持HTTPS、身份验证、代理和会话管理等功能。
2.lxml
lxml是一个Python库,用于处理XML和HTML文档。它基于libxml2和libxslt库,提供了一组简单易用的API来解析、生成、修改XML和HTML文档。
lxml可以快速解析和处理大型XML和HTML文档。支持XPath和CSS选择器,可以快速查找和遍历文档中的元素。支持XML和HTML序列化,可以将文档保存为字符串或文件。支持XSLT转换,可以将一个XML文档转换为另一个XML文档或HTML文档。支持DTD和XMLSchema验证,可以验证XML文档的合法性。支持命名空间,可以处理具有复杂命名空间的XML文档。
使用lxml可以方便地处理XML和HTML文档,例如提取网页内容、生成XML配置文件、处理XML数据等。同时,由于lxml底层使用C语言实现,因此具有很高的性能和可靠性。
1.jieba
jieba库是一个基于Python的中文分词库,它采用了基于前缀词典实现的分词算法,可以对中文文本进行分词,并输出分词结果。
jieba库的特点是分词速度较快,准确度较高,且具有良好的可定制性。它支持三种分词模式:精确模式、全模式和搜索引擎模式,可以根据不同的需求选择合适的模式进行分词。另外,jieba库还支持自定义词典和关键词提取功能。
使用jieba库可以方便地对中文文本进行处理,如中文分词、关键词提取、文本分类、情感分析等任务。同时,由于它是基于Python实现的开源库,因此可以方便地集成到各种Python项目中。
2.pandas
pandas是一个基于Python的数据处理库,提供了高性能、易用的数据结构和数据分析工具。它最初由AQRCapitalManagement在金融行业中开发,现在已成为广泛使用的开源库。
pandas库的主要数据结构是Series和DataFrame。Series是一维数组对象,类似于Python中的列表或数组,但它有标签(label),可以使用标签来访问数据,而不仅仅是使用整数索引。DataFrame则是二维的表格型数据结构,可以看做是由多个Series组成的。
pandas库提供了丰富的数据操作和分析功能,包括数据清洗、转换、切片、过滤、合并、聚合、排序、分组、透视表等。它还支持从多种文件格式(如CSV、Excel、SQL、JSON等)读取数据,并可以将数据导出到多种格式。
3.Snownlp
Snownlp是一个基于Python的中文自然语言处理工具包,它可以进行中文分词、词性标注、情感分析、文本分类、关键词提取、摘要生成等多项NLP任务。Snownlp采用了一些传统的机器学习算法和统计模型,例如隐马尔可夫模型(HMM)、条件随机场(CRF)、朴素贝叶斯分类器等,同时还采用了一些深度学习算法,例如卷积神经网络(CNN)和循环神经网络(RNN)。
Snownlp提供了一些简单易用的API,可以方便地进行文本处理,例如:
中文分词:使用snownlp.Segment()函数即可将一段中文文本分割成词语。
词性标注:使用snownlp.Tag()函数可以为文本中的每个词语标注其词性。
情感分析:使用snownlp.Sentiment()函数可以对一段中文文本进行情感分析,判断其中表达的情感是正面的还是负面的。
Snownlp具有较高的准确性和稳定性,同时也支持用户自定义词典和训练模型,可以根据具体的应用场景进行灵活的配置和调整。
PyMySQL是Python编程语言的一个第三方模块,它提供了对MySQL数据库的访问,允许Python开发人员通过Python代码连接、查询、修改和管理MySQL数据库。
PyMySQL支持多种MySQL数据库操作,包括创建和删除数据库、创建和删除表格、插入、更新和删除数据、以及执行SQL查询语句等。
使用PyMySQL可以方便地在Python中访问MySQL数据库,进行数据操作。PyMySQL还具有易于使用、性能良好、兼容性强等优点,是Python中访问MySQL数据库的首选库之一。
1.EChart
ECharts(EnterpriseCharts)是一个基于JavaScript的开源可视化库,由百度前端团队开发并维护。它提供了一套简单、直观、丰富的图表组件,支持多种数据格式的展现,包括线性图、柱状图、饼图、散点图、雷达图、热力图等等。ECharts不仅支持图表的基本绘制功能,还支持图表的交互、动画效果、地图展示等功能,可以满足大多数数据可视化的需求。
ECharts具有易于使用、灵活性强、可定制性高等特点,可以通过简单的JavaScript代码创建出美观、实用的数据可视化图表,并可与其他前端框架(如Vue、React等)和后端语言(如Java、PHP等)配合使用。同时,ECharts还提供了完善的文档、示例和社区支持,方便开发者学习和使用。
2.WorldCloud
WordCloud(词云)是一种可视化文本数据的方法,它通过将文本中的单词按照词频大小在图像上呈现不同大小的字体来展示文本数据的重要性和关键词。在词云图中,出现频率较高的单词会被放大显示,而出现频率较低的单词则会被缩小甚至隐藏。词云图的目的是让人们能够快速理解文本数据的主题和内容,并从中发现一些潜在的信息和关系。
词云图在数据可视化领域广泛应用于文本分析、舆情监测、品牌管理、社交网络分析等方面。通过词云图,我们可以直观地了解文本数据的热点、趋势和特点,从而更好地进行数据分析和决策。
本系统开发选择python技术,python技术是一个完全面向对象的语言,为开发者提供了丰富的类库,大大减少了使用windows编程的难度,减少开发人员在设计算法上的难度,作为python技术开发pycharmo更是一个必不可少的角色,它友好的界面,以及强大的功能,给程序开发人员带来了很多方便,加上环境简单,转移方便,无疑使此系统最佳的选择。
Python是一款开源免费的脚本语言,Pycharm开发环境也有免费的社区版,而且excel也是一款优秀的免费的数据存储软件。因此开发成本几乎可以忽略不计,因此经济可行性非常高。
随着电影产业的快速发展,电影票房数据的分析和可视化已经成为了电影行业重要的研究方向。基于Python的电影票房数据爬取与可视化系统可以帮助电影从业者更好地了解电影市场的发展趋势和受众口味,从而做出更具针对性的决策。
本系统的功能需求分析如下:
1.数据爬取功能
该系统需要通过Python爬虫技术从电影票房网站上抓取最新的电影票房数据,并将数据存入MySQL数据库中。在爬取数据的过程中,需要考虑数据的准确性和完整性。
2.数据清洗与处理功能
电影票房数据中可能存在重复记录、缺失数据、错误数据等问题,因此需要使用pandas库对数据进行清洗和处理,保证数据的准确性和完整性。
3.自然语言处理功能
4.数据可视化功能
本系统需要将爬取、处理后的数据进行可视化展示,以图表、折线图、柱状图等形式呈现出电影票房数据的趋势和规律。同时,本系统需要支持用户对数据进行筛选和排序,以便用户更好地了解电影市场的发展趋势和受众口味。
5.用户管理功能
6.系统性能优化功能
该系统需要考虑数据量庞大的情况下,系统的性能问题。因此,需要对系统进行性能优化,包括数据索引、缓存等。
7.安全性保障功能
该系统需要考虑数据的安全性问题,包括数据备份等,以保证数据的安全性和完整性。
该系统使用PythonFlask部署,MySQL存数据,pandas库清洗数据,snownlp进行自然语言处理,layui前端展示。这些技术的使用使得系统具有高效、准确、安全、易用等优点,为电影行业从业者提供了重要的数据分析和决策支持。
本系统拥有多种类型的用户,且用户之间的计算机水平各不相同。对于系统的执行操作,以及对分析结果的理解,系统应针对不同用户进行设计。为让本系统在更大限度上满足大多数用户的需求,系统应本着“以用户为中心”的原则进行设计。需要设计简洁清晰的操作界面,对不同的数据分析结果表现需要以多种方式进行描述以便用户理解,适当提供操作的提示功能通过多种方式帮助用户进行操作等。
良好的可移植性可以提高系统的生命周期。为满足系统在不同系统环境下的稳定运行,系统程序的编写应使用具有良好的可移植的高级语言编写。
系统采用了Web页面,整体风格美观简洁,操作简单易懂,用户使用方便。在系统设计中,需要考虑用户的系统感官需求,包括以下方面:
1.用户界面的美观性:系统需要具有美观、简洁、直观的用户界面,方便用户使用和操作,同时提高用户的使用体验。
2.数据可视化的直观性:系统需要将采集到的电影票房数据进行可视化展示,对数据进行直观、清晰、易懂的呈现,方便用户进行数据分析和决策。
3.数据的实时性和准确性:系统需要及时、准确地采集和处理电影票房数据,确保数据的实时性和准确性,为用户提供可靠的数据支持。
4.系统的稳定性和可靠性:系统需要具有稳定、可靠的性能,确保系统的正常运行和数据的安全性,同时提高用户对系统的信任。
本爬虫系统分为数据爬取模块(爬取豆瓣TOP250排行榜以及电影详细数据)、数据分析模块(数据预处理及分析)、数据可视化模块(词云展示以及绘图展示),如图4.1系统结构图所示。
图4.1系统结构图
用Python的Scrapy框架编写爬虫程序抓取了Top250排行榜的影片榜单信息,爬取电影的短评、评分、评价数量等数据,并结合Python的多个库(Pandas、Numpy、Matplotlib),使用Numpy系统存储和处理大型数据,中文Jieba分词工具进行爬取数据的分词文本处理,wordcloud库处理数据关键词,最终通过词云图、网页动态图展示观众情感倾向和影片评分统计等信息。系统结构如图4.1所示,对应系统总体流程图如图4.2所示。
图4.2系统总体流程图
数据分析模块主要是使用pandas库将获取的电影数据提取清洗,包括去除空值、数据类型转换,将数据存为Excel文件和MySQL数据库中。此外还需要对文本数据进行提取转化,计算关键词的权重值。首先从数据库中读取数据,将其中的文本内容进行合并,并作为输入传入LocalTextRank类中。通过分词、构建节点以及构建矩阵等操作,最终使用TextRank算法计算出每个词的权重值,并将结果存储在Excel文件中。具体如图4-4数据分析模块流程图所示。
图4-4数据分析模块流程图
数据分析模块主要是运用Flask应用的路由函数,接收GET请求并打印请求参数,从MySQL数据库中查询关键词与搜索参数匹配的数据记录,其中的电影数据直接通过fetchone方法,转化成JSON格式,通过get或者post方法传递到layui前端页面,根据flask的route选择html页面,传递的数据将通过echart渲染成不同的可视化效果。同理对每个记录进行情感分析、关键词提取和词性标注,并使用这些信息生成HTML代码。最后返回生成的HTML代码响应给请求方。具体如图4-5数据可视化模块流程图所示。
图4-5数据可视化模块流程图
概念模型是对现实中的问题出现的事物的进行描述,ER图是由实体及其关系构成的图,通过E-R图可以清楚地描述系统涉及到的实体之间的相互关系。用户实体图如下图4-7
电影信息实体图如下图4-8
表4-1:用户表
字段名称
类型
长度
字段说明
主键
默认值
id
int
0
用户ID
username
varchar
255
用户名
password
密码
text
content
简介
address
地址
phone
表4-2:电影信息表
200
链接
title
100
电影名
directedBy
导演
actor
演员
genre
country
国家地区
language
语言
imbd
initialReleaseDate
runtime
average
评分
votes
summary
duan_comment
短评
chang_comment
长评
内容
userful
author
用户
rate
time
short
接着我们通过网络请求获取url页面并使用XPath解析HTML页面的元素,将解析的电影信息以字典形式存储在字典中,包括电影的标题、导演、演员、类别、国家、语言、imbd、上映日期、运行时长、平均评分、投票数、摘要等内容,还包括短评和影评数量的解析。最后返回该电影的解析结果。核心代码如图5.2所示:
图5.2获取电影信息
对电影数据进行分析的一个很重要的模块是对其文本进行关键词提取,并计算关键词的权重值。其中,首先从数据库中读取数据,将其中的文本内容进行合并,并作为输入传入LocalTextRank类中。在该类中,通过分词、构建节点以及构建矩阵等操作,最终使用TextRank算法计算出每个词的权重值,并将其存储在字典中。最后,将每个词及其相应的权重值输出到控制台,并将结果存储在Excel文件中。核心代码如图5.3所示:
图5.3TextRank
对于已获取到的电影数据,合适的清洗和存储至关重要。我们从一个名为"temp.txt"的文件中读取采集的电影信息,并将其转换为一个DataFrame对象,清洗并去除重复数据,最后将清洗后的数据导出为Excel文件,以及通过SQL语句将数据导入数据库。具体来说,该代码会读取"temp.txt"文件中的内容并将其转换为一个列表,然后使用pandas库将该列表转换为DataFrame对象并输出该对象的前10行和描述性统计信息。接着,该代码会对DataFrame对象中的"runtime"列进行清洗,并使用drop_duplicates()函数去重。然后,该代码会将清洗后的数据导出为一个名为"org_data.xlsx"的Excel文件。最后,该代码会通过for循环遍历DataFrame对象,并将每一行的数据插入到一个名为"movieinfo"的数据库表中。其中,每一行的数据都会通过一个insert语句插入到该表中。如果插入出错,则会输出错误信息。核心代码如图5.4所示:
图5.4电影数据存储
我们运用Flask应用的路由函数,接收GET请求并打印请求参数,从MySQL数据库中查询关键词与搜索参数匹配的数据记录,对这些数据记录进行排序并取前20个,然后对每个记录进行情感分析、关键词提取和词性标注,并使用这些信息生成HTML代码。最后返回生成的HTML代码响应给请求方。核心代码如图5.5所示:
图5.5WEB服务端
本文实现的电影可视化登陆界面如图5.6所示:
图5.6登陆界面
图5.7个人中心
图5.8密码修改
我们可以切换至电影数据看板模块,其下有看板概况、电影概况和短评概况三个子页面,分别如图5.9-5.11所示:
图5.9看板概况
图5.10电影概况
图5.11短评概况
我们还可以切换至电影属性分析,在这里有电影分类分析、电影运行时长分析、电影国家分析、电影语种分析以及高频演员分析,分别如图5.12-5.16所示:
图5.12电影类型分析
图5.13运行时长分析
图5.14电影国家分析
图5.15电影语种分析
图5.16高频演员分析
图5.18好评分析
图5.19中评分析
图5.20差评分析
在本文中,我们还对电影特征词进行了建模,这样我们对所想要了解的电影的特征词就可以一目了然,如图5.21所示:
图5.21特征词模型
系统测试不仅仅是发现系统潜在的BUG或错误,而更为重要的是为员工提供一个良好的体验和安全服务。而通过发现错误或潜在的问题,将有助于提升竞争力,这也是软件测试的其中的重要目的之一。
对于基于python的电影票房数据爬取与可视化系统,需要进行系统功能测试,包括以下方面:
2.电影类型分析测试:测试系统能否准确展示电影分类、可视化等信息
3.运行时长分析测试:测试运行时长分析是否能够准确显示可视化图表。
4.电影国家分析测试:测试用户是否能够正确显示电影国家分析可视化图表。
5.电影语种分析测试:测试用户是否能够正常显示电影语种分析可视化图表。
6.特征模型测试:测试管理员是否能够正确TextRank及其权重。
系统功能测试的目的是保证系统的稳定性和信息准确性,提高系统的用户体验和推荐效果,从而提高系统的整体质量。通过系统测试结果发现,本系统各项功能基本满足设计要求。
本文实现了一套电影数据分析系统的开发,并提供基于数据分析的决策支持。我们调研了电影市场的现状以及数据分析对电影产业的重要性,并对国内外现状进行了总结。接着,我们介绍了系统开发所需的技术和运行环境,包括开发环境的搭建和各种第三方库的应用。我们通过可行性分析和系统需求分析明确了系统设计目标和技术要求,包括易用性、可移植性和系统观感需求等。最后,我们提供了该系统的实现过程和各项功能的测试情况,包括数据爬取、数据分析、数据存储和数据可视化等。
在本次毕业设计的过程中,首先需要解决的问题就是安装Python和Pycharm,并完成基本配置。在成功安装Pycharm后,经过老师和同学们的耐心指导和帮助,我们逐渐掌握了网络爬虫的实现步骤和注意事项。通过初步的爬虫开发,我们成功采集到了豆瓣电影Top250网站的电影基本数据和影评,并完成了对数据的绘图和影评词云化。尽管仍有许多细节需要完善,但我们愿意持续不断地改进和优化。
这次毕业设计让我们学习了很多关于爬虫的理论和实践知识,我们甚至独立实现了整个分布式爬虫。这次经历不仅丰富了我们的学识和见解,也大大提高了我们的动手能力和解决问题的能力。相信这些技能和能力将会对我们未来的学习和生活产生重要的帮助和支持。