第1章 绪论
1.1 研究背景及意义
进入21世纪,特别是第二个十年,世界互联网取得了惊人的快速发展。根据分析师玛丽·米克尔 (Mary Mikel) 2016年发布的一份互联网趋势报告,到2016年年中,全球互联网用户超过30亿,约占全球总人口的40%,中国超过6.9亿互联网用户维持了多年来全球最大的互联网用户市场。互联网的快速发展,同时互联网产生的数据量也随着互联网用户的不断涌入而产生了爆炸性的增长,世界进入了"大数据"时代[1][2]。欧洲最大的电子优惠券应用提供商Vouchercloud在2015年发布的一份报告显示,每天在互联网上生成的数据高达2.5万亿字节(五分之一字节),这些数据可以充满超过1亿张蓝光光盘25GB容量)。因此,如何在互联网上查询海量信息中的有价值数据,成为一个需要解决的问题。
在互联网发展初期,网站相对较少,信息查找比较容易。然而伴随互联网爆炸性的发展,普通网络用户想找到所需的资料简直如同大海捞针,这时为满足大众信息检索需求的专业搜索网站便应运而生了,人们对信息的获取逐渐被网络所取代。目前,人们大多通过搜索引擎获得有用的信息,因此,搜索引擎技术的发展将直接影响人们获得所需信息的速度和质量。
作为搜索引擎技术核心元素之一,网络爬虫[1][2][3]源于上个世纪90年代的Google等搜索引擎,爬虫用于抓取互联网上的Web页面,再由搜索引擎进行索引和存储,从而为我们提供检索服务。网络爬虫位于搜索引擎的后台,并未直接与用户接触,属于幕后技术,因此在较长的时间内并未被广大开发人员所关注。
2005年以来,人们对网络爬虫技术的关注度快速上升。其中,很大的推动力来自于各种个人、中小型爬虫。爬虫是一个实践性很强的技术活,互联网上爬虫数量的增长速度剧增。爬虫技术历经20多年的发展,技术已日趋多样[4][5][6][7]。
1.2 国内外现状
随着网络信息资源的指数化增长和网络信息资源的动态变化,传统搜索引擎提供的信息检索服务已不能满足人们对个性化服务日益增长的需求,正面临着巨大的挑战。以什么样的网络接入策略,提高搜索效率,已成为近年来专业搜索引擎网络爬虫研究的主要问题之一[9][10][11]。
网络爬虫是搜索引擎的重要组成部分,目前比较流行的搜索引擎有百度、谷歌、雅虎、必应等,可以说没有网络爬虫的存在,就可能没有搜索引擎的存在,出于商业保密的考虑,各种搜索引擎使用的爬虫系统的技术内部人员一般不公开,现有文献仅限于摘要介绍。在很大程度上,Web搜索引擎、数字图书馆和其他Web应用都依赖于网络爬虫获取的HTML文档信息。例如为了提供多种搜索引擎服务,谷歌、雅虎和MSN的爬虫定期遍历数十亿网页,网络购物智能代理通过价格比较未用户推荐价格优惠的产品[12][13]。
本文通过爬取影视数据通过分析让为用户观影时提供决策支持。
1.3 论文结构
本文旨在通过开发一套电影数据分析系统,提供基于数据分析的决策支持。在第一章中,介绍了电影市场的现状以及电影数据分析对于电影产业的重要性,并对国内外现状进行了总结。第二章主要介绍了开发该系统所用到的技术和运行环境,包括开发环境搭建和各种第三方库的应用。第三章通过可行性分析和系统需求分析来明确该系统的设计目标和技术要求,包括易用性、可移植性和系统观感需求等。第四章介绍了该系统的实现过程和各项功能的测试情况,包括数据爬取、数据分析、数据存储和数据可视化等。最后,在第五章中对本研究进行了总结,并展望了未来该系统的发展方向。
第2章 开发技术与运行环境
2.1 开发环境搭建
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python语言是人工智能和大数据的标准语言,随着云计算、大数据、物联网、人工智能、区块链等技术被广泛应用于各行各业。自20世纪90年代Python语言公开发布以来,由于其语法简洁、类库丰富,适用于快速开发活动,已经成为当下较为流行的一种脚本语言。Python语言具有强大的数据分析功能,可以应用到网站开发、图像处理、数据统计和可视化表达等多个领域。
1. 从官网下载python3安装包,官网:Welcome to Python.org。
2. 安装python,并配置环境变量。
3. 从官网下载pycharm安装包,官网:http://www.jetbrains.com/,安装pycharm。
4. 将pycharm关联python,并配置国内镜像源https://pypi.tuna.tsinghua.edu.cn/simple。
2.2 第三方库
2.2.1关于数据爬取的第三方库
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和XML Schema验证,可以验证XML文档的合法性。支持命名空间,可以处理具有复杂命名空间的XML文档。
使用lxml可以方便地处理XML和HTML文档,例如提取网页内容、生成XML配置文件、处理XML数据等。同时,由于lxml底层使用C语言实现,因此具有很高的性能和可靠性。
2.2.2关于数据分析的第三方库
1.jieba
jieba库是一个基于Python的中文分词库,它采用了基于前缀词典实现的分词算法,可以对中文文本进行分词,并输出分词结果。
jieba库的特点是分词速度较快,准确度较高,且具有良好的可定制性。它支持三种分词模式:精确模式、全模式和搜索引擎模式,可以根据不同的需求选择合适的模式进行分词。另外,jieba库还支持自定义词典和关键词提取功能。
使用jieba库可以方便地对中文文本进行处理,如中文分词、关键词提取、文本分类、情感分析等任务。同时,由于它是基于Python实现的开源库,因此可以方便地集成到各种Python项目中。
2. pandas
pandas是一个基于Python的数据处理库,提供了高性能、易用的数据结构和数据分析工具。它最初由AQR Capital Management在金融行业中开发,现在已成为广泛使用的开源库。
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.SnowNLP()函数可以对文本进行分类,例如将一篇新闻文章分类为体育、娱乐、科技等不同的主题。
Snownlp具有较高的准确性和稳定性,同时也支持用户自定义词典和训练模型,可以根据具体的应用场景进行灵活的配置和调整。
2.2.3关于数据存储的第三方库
PyMySQL是 Python 编程语言的一个第三方模块,它提供了对 MySQL 数据库的访问,允许 Python 开发人员通过 Python 代码连接、查询、修改和管理 MySQL 数据库。
PyMySQL 支持多种 MySQL 数据库操作,包括创建和删除数据库、创建和删除表格、插入、更新和删除数据、以及执行 SQL 查询语句等。
使用 PyMySQL 可以方便地在 Python 中访问 MySQL 数据库,进行数据操作。PyMySQL 还具有易于使用、性能良好、兼容性强等优点,是 Python 中访问 MySQL 数据库的首选库之一。
2.2.4关于数据可视化的第三方库
1.EChart
ECharts(Enterprise Charts)是一个基于 JavaScript 的开源可视化库,由百度前端团队开发并维护。它提供了一套简单、直观、丰富的图表组件,支持多种数据格式的展现,包括线性图、柱状图、饼图、散点图、雷达图、热力图等等。ECharts不仅支持图表的基本绘制功能,还支持图表的交互、动画效果、地图展示等功能,可以满足大多数数据可视化的需求。
ECharts具有易于使用、灵活性强、可定制性高等特点,可以通过简单的 JavaScript 代码创建出美观、实用的数据可视化图表,并可与其他前端框架(如Vue、React等)和后端语言(如Java、PHP等)配合使用。同时,ECharts还提供了完善的文档、示例和社区支持,方便开发者学习和使用。
2.WorldCloud
WordCloud(词云)是一种可视化文本数据的方法,它通过将文本中的单词按照词频大小在图像上呈现不同大小的字体来展示文本数据的重要性和关键词。在词云图中,出现频率较高的单词会被放大显示,而出现频率较低的单词则会被缩小甚至隐藏。词云图的目的是让人们能够快速理解文本数据的主题和内容,并从中发现一些潜在的信息和关系。
词云图在数据可视化领域广泛应用于文本分析、舆情监测、品牌管理、社交网络分析等方面。通过词云图,我们可以直观地了解文本数据的热点、趋势和特点,从而更好地进行数据分析和决策。
第3章 需求分析
3.1可行性分析
3.1.1技术可行性分析
本系统开发选择python技术,python技术是一个完全面向对象的语言,为开发者提供了丰富的类库,大大减少了使用windows编程的难度,减少开发人员在设计算法上的难度,作为python技术开发 pycharmo更是一个必不可少的角色,它友好的界面,以及强大的功能,给程序开发人员带来了很多方便,加上环境简单,转移方便,无疑使此系统最佳的选择。
3.1.2经济可行性分析
Python是一款开源免费的脚本语言,Pycharm开发环境也有免费的社区版,而且excel也是一款优秀的免费的数据存储软件。因此开发成本几乎可以忽略不计,因此经济可行性非常高。
3.1.3操作可行性分析
本系统的开发符合国家法律进行,也不会触犯到任何人,任何集体的法律权益。只要开发过程中遵纪守法就完全符合法律要求,并且使用计算机的用户都会具有一定的计算机基础,并且本系统操作方法简单,分析的均为计算机相关方面的人才,所以用户绝对能够熟练使用该系统,并且普通会使用计算机的人群也能使用。因此社会可行性很高。
3.2系统需求分析
随着电影产业的快速发展,电影票房数据的分析和可视化已经成为了电影行业重要的研究方向。基于Python的电影票房数据爬取与可视化系统可以帮助电影从业者更好地了解电影市场的发展趋势和受众口味,从而做出更具针对性的决策。
本系统的功能需求分析如下: