基于Python的电影数据爬取与数据可视化分析研究
成文莹,李秀敏
(滨州医学院公共卫生与管理学院,山东烟台264003)
摘要:该文借助Python功能完备的标准库、强大的第三方库requests、BeautifulSoup以及正则表达式,编写程序快速实现中国票房网页及豆瓣电影TOP250数据的抓取,通过matplotlib图形库以图形化的方式直观地展示数据结果,并加以分析,得出相关结论。该文研究为培养处理能力和可视化分析能力奠定了基础。
关键词:数据爬取;Python;可视化
中图分类号:TP391文献标识码:A
文章编号:1009-3044(2019)31-0008-03开放科学(资源服务)标识码(OSID):
Research on Movie Data Crawling and Data Visualization Analysis Based on Python
CHENG Wen-ying,LI Xiu-min
(School of Public Health and Management,Binzhou Medical University,Yantai264003,China)
Abstract:With the help of Python's full-featured standard library,powerful third-party library,such as requests,BeautifulSoup,and regular expressions,the author quickly writes the Chinese box office webpage and Douban movie TOP250data capture,and graphically displays it through the matplotlib graphics library.The results of the data are analyzed and the relevant conclusions are drawn.The re⁃search of the thesis lays the foundation for cultivating students'data processing ability and visual analysis ability.
Key words:Data crawling;Python;Visualization
1背景
随着大数据和人工智能时代的到来,人们在数据的价值上逐渐取得共识,而获得数据是数据挖掘与分析的首要工作[1]。论文利用Python丰富的标准库,研究网络爬虫的原理并实现电影网络数据的获取,并将获得的数据进行可视化显示和数据分析。
Python语法简洁清晰,易学,可扩展性强,具有丰富的标准库和第三方库供程序员使用。Python爬虫工
具包使用方便,对数据抓取提供了可能[2]。
2数据爬取与可视化方法分析
网络爬虫是一个从Web上自动下载网页的计算机程序。爬虫技术是一个可以连接数据和解析数据,并将这些数据进行分析并将分析结果利用图表进行展示的工具。Python具有丰富的网络爬虫模块,具有很强的可扩展性与可嵌入性。
可视化分析可以提高科研人员对数据隐藏信息的洞察力[3]。可视化分析是一种综合利用可视化界面和分析理论来帮助用户解释复杂数据的技术。可视化是用户与数据交互的接口,表现形式通常有直方图、饼图、散点图等。2.1数据采集
数据采集的执行过程分为:第一,分析网址信息到网页页面并分析网页源代码结构;第二,根据网址抓取网页并将网页内容分离开来;第三,处理数据且将抓取后的数据写入到数据库中。上述三步重复执行直至数据采集结束。抓取网页内容,一般有两种方法,一种是使用python库,另外一种是使用正则表达式去提取相关内容。
2.2分析及解析网页
论文使用Python中的requests库进行数据采集。Beautiful⁃Soup是一个HTML/XML的解析器,来解析UR
L的文本信息[4]。通过确定每个数据对应的元素及Class名称后,使用find,find_all,select等方法进行标签的定位,进行数据提取。
2.3正则表达式提取数据
使用正则表达式对豆瓣电影TOP250进行数据采集。正则表达式(re)可匹配、搜索、替代高级文本模式,并为其他的一些功能提供基础。正则表达式描述了字符与字符之间的某一种重复方式,是由字符以及特殊符号组成的,所以能按照某种已经设定好的模式和有类似特征的字符串集合进行匹配,依次读
收稿日期:2019-09-08
基金项目:滨州医学院2018年度大学生创新创业训练计划项目(项目编号:201810440167)
作者简介:成文莹(1998—),滨州医学院2017级信息管理与信息系统专业在校生;李秀敏(1978—),女,山东滨州人,通讯作者,滨州医学院副教授,硕士,主要研究方向为网络工程。
Computer Knowledge and Technology 电脑知识与技术
第15卷第31期(2019年11月)
取每个需要爬取的字段名称和提取规则[5]。2.4数据整理
采用Python 中的pandas 库对采集到的数据进行必要的整理,采用mean 、loc 、sort_values 、groupby 、merge 等方法进行数据的统计与处理。将爬取的数据组合成DataFrame 表格格式。pandas 的基本功能是对数据进行索引査、过滤和函数应用,除此之外,还有数据汇总和统计等功能,是实际数据分析中应用最为广泛的模块。2.5数据存储与可视化输出
爬虫获取的数据可以将数据存储为txt 、xls 、csv 格式,也可存储在数据库中(包括MySQL 关系数据库和MongoDB 数据库)[6]
。论文数据存储为csv 格式,具有方便导入数据库的特点。除此之外,还可以存储成pdf 格式的文件。然后,采用Python 中的matplotlib 库以散点图、饼状图、条形图等形式进行数据的可视化输出[7]。2.6数据结果分析
对数据清洗和预处理后的票房、评论文本进行描述性数据统计分析。
3电影数据爬取与分析
3.1提取数据
打开中国票房网页页面并分析网页源代码结构。分析代码过程中,可利用开发者工具确定每个数据对应的元素及Class 名称。例如用语句soup.find_all('table',{'id':'tbContent'}),到表格,id 名称为tbContent 。
下载并解析中国票房网页,提取想要的数据信息,通过BeautifulSoup 库提取了电影名、电影类型、上映地点以及电影票房并且将每个数据用DataFrame 放入对应列表中,见表1和表2,然后生成数据图,分析数据。name,types,place,boxoffices 字段分别是电影名,电影类型,上映地点,票房。3.2数据分析
从网页中提取数据后,将数据保存成csv 文件,然后采用Python 的统计方法,对数据进行简单的统计和分析。3.2.1统计各电影类型在中国电影市场的平均票房
通过groupby 方法按照类型分组,统计相应类型电影的总个数以及各个类型的电影票房的平均数和总数,并使用mat⁃plotlib.pyplot 库作条形图和饼图,结果一目了然,见图3和图4。
如图1所示:横轴为电影类型,从左到右依次为爱情、动
画、动作、剧情、科幻、喜剧,竖轴为票房。从图中我们不难看出,科幻类型的电影更受人们的青睐,喜剧和动作电影大众喜欢程度相差不大。
从图2中我们也可以清楚的看到某种类型的平均电影票数占总平均票数的比例。我们不难得出结论,科幻类型的电影的平均票房占了绝大部分,具体数值为32.25%
。
表1
爬取电影信息
表2排名前5位电影信息
3.2.2
各地区在中国电影市场上映电影数量
图3地区分布
图3可以分析出每个地区在中国电影市场的活跃度,从图3中可以看出美国在中国电影市场活跃度最高,中国紧追其后。3.2.3各个上映地区在中国电影市场上的平均电影票房数
同样,我们通过groupby 按照地区分组,统计在中国各地区上映的电影平均票房。如图4所示:横轴为地区,竖轴为平均电影票房数量,从图4中我们可以分析出人们对各地区在中国电影市场的认可度。从图4中我们可以直观地看到中国上映的电影的平均票房数量最多,这也与国人对国产电影的支持和国产电影类型和数量在这些年不断快速发展有关。
3.2.4不同评分电影的数量
下载并用正则表达式解析豆瓣TOP250网页,如图5所示:横轴为评分,竖轴为数量,该图可表示出豆瓣网前250名电影评分主要分布的范围,从图中可以看出,8.7评分的电影数量最多。评分主要分布中8.5到9.2之间。由此可见,大众对电影类型喜好虽然不同,
但是有一定包容性。
图5不同评分区间电影分布
4结束语
大数据时代下,人类社会的数据正以前所未有的速度增长。编写爬虫程序获取到的海量数据更为真实、全面,在信息繁荣的互联网时代更为行之有效。因此编写爬虫程序成为大数据时代信息收集的必备技能。
Python 作为一门脚本语言,它灵活、易用、易学、适用场景多,实现程序快捷便利。课题主要采用Python ,结合正则表达式、BeautifulSoup 等丰富且强大的库,探讨构建模块化的web 数据采集、Html 解析及抓取链接数据的方法,深入研究爬虫的基本原理与数据挖掘的算法。通过爬虫获取的海量信息,我们可以对其进行进一步的分析:市场预测、文本分析、机器学习方法等。
对于卫生信息化方向的信息管理与信息系统的专业学生而言,掌握Python 数据抓取的方法、熟悉搜索引擎和网络爬虫相关技术以及检索算法,为将来从事数据收集与处理的医疗信息化相关工作打下良好基础。
参考文献:
[1]胡晓燕.基于Python 的可视化数据分析平台设计与实现[J].信息与电脑:理论版,2018(17):96-97,100.
(下转第12页)
图1
票房分布
图4上映地区分布票房数
图2题材分布
而基于ADO方式的数据库可以被当作是基于活动数据对象的数据库,因此它可以对OLEDB的接口进行封装,同时也可以为数据库访问的高层接口的调用提供重要的支持。而只有确保数据库的连接能够处于正常的范围内,数据库操作才能顺利进行。为了实现这一目标,在编程之前需要提前引入ADO对象,同时还需要使用VB菜单当中的相关程序进行设置,工作人员也可以通过文本框的控件来实现记录字段数据库的绑定工作。将OLEDB的相关函数应用于SQL数据库连接之后,工作人员就可以通过获取客户端的ODBC数据来实现配置的连接。
在实际的应用当中,这三种数据访问方式需要同时应用才能充分发挥效果。在数据库数据的获取的时候,数据记录的位置并不是固定的,是可以根据实际情况而自由活动的。不同使用人员在使用数据库系统的时候,数据库所记录的集合可以将数据复制的数据库随时传输到客户端当中供用户使用。比如当用户需要相关的记录来确定类型的时候,系统就可以将其中的数据记录转变为只读数据,相关人员也可以通过批量处理的方式来完成数据的更新。
2数据库访问技术在VB编程开发中的应用
以某智能调参系统为例,在系统的应用与开发过程当中,需要通过数据库信息的采集和应用来确保数据的高效运行。其中在数据库的应用过程当中,需要的数据主要包括计算过程当中的数据、目前工况进行
判断和预估之后所得到的数据以及系统管理人员的相关数据等。
这首先需要建立起相关的接口,在智能调参系统当中可以使用ADO方式实现对SQL数据库的访问,这在充分确保系统快速性和通用性的基础上可以满足操作便捷性的要求。在设计智能调参系统的时候需要两个数据库,因此首先需要建立起两个数据库的连接接口。其次,需要对数据库的相关内容进行比较。在比较之后,需要完成对数据库当中各项信息的采集,然后将信息复制更新到应用数据库当中。这样就可以对数据库当中的信息与数据内容进行对比,从而筛选出应用数据库当中所缺少的数据并将其插入。在读取和比较数据库信息的时候,通常是使用Preserve关键词当中的ReDim语句来实现的,这种方法的优点在于可以适用于数据量未知的情况。在对数据库进行比较的过程当中,可以将两列的数据库分别储存到同一个字符串的数组当中,然后对采集数据库和应用数据库当中的数组进行比较。在比较完成之后就可以将重新插入的数据采集到combo当中,然后就可以直接调用read_Click显示插入内容,从而使数据库当中的信息得到更新。
3数据库访问技术在VB编程开发应用当中需要注意的问题在建设数据库的过程当中,VB可以通过建立新变量类型的方式来避免使用实型变量所带来的数值累积问题,这样可以避免实型变量所造成的误差问题。VB程序开发在使用函数的时候,需要在函数的名称后面添加括号。与Basic相比,VB对于变量的使用规范有很多的说明,比如需要将隐含变量当作局部变量;再比如说明语句需要动态链结库的子程序与无变量函数使用数组。因此在应用的时候需要注意很多问题。
首先,对于数据库系统来说,每一次的数据记录都是一项复杂的工程,而每一次数据和信息的误报都会造成很大的损失。为了避免这部分损失,需要工作人员认真对待数据的处理工作。与此同时,技术专家还采用了设定外来入侵病毒特征的方式来降低误报漏报的频率,但是这种方式在实际操作的时候需要对审定的程序解释规则集,还需要在大量的信息当中实现对某一数据的检测。
其次,在应用的过程当中需要做好相关的安全防护工作。比如需要做好攻击防御、身份认证、安全审计等。这样才能避免黑客利用数据库的参数配置问题入侵到数据库系统当。而身份认证技术可以为数据传输的安全提供保障。安全审计则可以利用数据库协议来及时修补系统的安全漏洞。
4结束语
随着技术的发展,以计算机网络技术为基础的数据库技术已经在我们生活的方方面面都得到了应用,为信息与数据的处理与整合提供了新的途径。VB编程开发则可以为数据库程序的构建提供支持,不仅可以促进数据库的空间使用程序,而且可以为数据库提供绑定服务。但是目前在使用VB编程开发的时候,无法直接在数据库当中进行操作,需要相关人员通过对象变量获取的方法来对数据库当中的信息进行拷贝,然后实现
VB编程开发。这需要工作人员能够利用好各种关键技术,了解数据库访问技术在VB编程开发应用过程当中可能会遇到的问题,做好误报预防与安全防护工作。
参考文献:
[1]陈庆涛..NET和分布式(网络)数据库集成技术支持下的WEB GIS系统研究与开发[D].成都理工大学,2018. [2]吴青林,王焱.VB中ADO访问数据库技术探讨[J].软件导刊, 2017,9(2):151-152.
[3]孟英杰,曲晶晶.Web数据库访问技术的研究[J].科技传播, 2018(16):195+190.
[4]佟晓筠,王翥.基于Web平台访问数据库技术的探讨与研究[J].微型机与应用,2018(3):4-7,14.
[通联编辑:唐一东]
(上接第10页)
[2]吴永聪.浅谈Python爬虫技术的网页数据抓取与分析[J].计
算机时代,2019(8):94-96.
[3]裴丽丽.基于Python对豆瓣电影数据爬虫的设计与实现[J].
电子技术与软件工程,2019(13):176-177.
[4]李培.基于Python的网络爬虫与反爬虫技术研究[J].计算机
与数字工程,2019,47(6):1415-1420,1496.[5]周洪斌.基于Python的豆瓣图书评论数据获取与可视化分
python网络爬虫书籍推荐析[J].沙洲职业工学院学报,2018,21(4):1-6.
[6]杨国志,江业峰.基于python的聚焦网络爬虫数据采集系统
设计与实现[J].科学技术创新,2018(27):73-74. [7]陈乐.基于Python的网络爬虫技术[J].电子世界,2018(16): 163,165.
[通联编辑:谢媛媛]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论