版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于网络爬虫的航班数据分析案例摘要利用互联网技术开发设计一个基于网络爬虫的航班数据分析系统,通过开发网络爬虫工具,通过互联网获取大量公开的航班信息,根据航班的具体信息,如高度、速度、航班所属国家等,对实时数据可视化展示,有利于分析临港上空的航班信息,对航班数据统计分析可提高工作效率。因此基于网络爬虫的航班数据分析分析系统的设计开发有着现实需求和意义。系统提供从网站爬取航班数据、设置爬虫参数,运行爬虫程序获取数据、筛选数据、实时数据可视化展示,展示可选择飞机的高度、速度、航班所属国家等信息。主要使用Pythonrequest、matplotlib和pandas等技术开发关键词:爬虫;数据分析;数据可视化目录1 开发背景 [10]。经济可行性研究的目的是在系统开发中以最小最合适的开发成本取得最佳的成果。本系统为基于网络爬虫的数据分析,使用的爬虫获取的数据均为网络上免费使用的数据,功能实用性极高,不需要再购买任何相关资料和数据。并且本系统具有较高的再开发性,如在后期购买专业数据,能向大数据分析方面进行再开发实现更多功能。技术可行性是研究现有技术是否能完成顺利开发工作,软、硬件是否能够满足开发的条件等待。本系统最终采用PyQt5来设计GUI,采用Pyechart来实现数据可视化,采用MYSQL数据库、json文件和csv文件来存储数据,并且本系统基于Windows系统,系统小巧,模块划分清晰完整,技术上开发完全可行。功能分析本系统为个人使用,功能需求有:爬取指定网址数据,将数据存储在数据库中,爬取指定经纬度区域航班并且实现地图可视化展示,爬取浦东机场以及虹桥机场航班数据并且对数据进行分析并生成图表并反映一定规律等。系统总体设计系统功能设计系统的功能设计在一个系统的开发过程中是十分重要的。在进行需求分析后,将各个功能整合到系统的几个模块中,来形成系统的总体框架。系统功能模块图爬虫与分析系统主要分为两部分:浦东、虹桥机场爬取分析,实时区域爬取分析。浦东、虹桥机场爬取分析部分有浦东虹桥机场进港离港航班展示查询模块、爬虫模块、图表分析模块、航线展示模块、具体航班飞行历史展示模块;实时区域爬取分析部分有特定经纬度爬虫模块、数据展示模块、实时航班地图显示模块、图表分析模块、具体航班飞行历史展示模块、航线展示模块。功能模块图如下图所示:图系统功能模块图各功能模块介绍浦东、虹桥机场爬取分析部分,通过爬取网站数据后能通过航班查询展示模块查看爬取下来存储在数据库中的数据,爬虫模块为多线程爬虫能在爬取数据过程中进行其他操作,图表分析模块通过生成多种图表对数据库中或爬取下来的数据进行分析并且生成简单易懂的各式图表,航线展示模块能对指定的航班航次在地图上显示飞行路线,具体航班飞行历史展示模块能爬取某个航班的近期飞行数据并展示,还能生成该航班起飞时间规律日历图。实时区域爬取分析部分,首先通过设定经纬度进行指定区域爬取网站航班数据,之后通过数据展示模块浏览整理后的爬取数据,能通过实时航班地图显示模块在地图上显示航班位置,也可以通过图表分析模块生成图表,也可以跳转到具体航班飞行历史展示模块爬取数据和浏览数据,生成日历图和航线图。系统流程设计根据系统功能,可以画出如下图所示的流程图:图5.2-1系统流程图数据库设计数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理数据,满足各种用户的应用需求,包括数据管理要求和数据操作要求。本文设计数据库的流程是:1.从系统的信息中抽取实体和关系,设计ER图,即实体-关系图。ER图是用来描述现实世界的概念模型,提供了表示实体性、属性和联系的方法。实体性用矩形表示,属性用椭圆形表示,联系用菱形表示。2.将ER图转化为数据库。设计E-R图实体属性图机场入港航班信息E-R图如图6.1.1-1所示:图6.1.1-1机场入港航班信息E-R图机场离港航班信息E-R图如图6.1.1-2所示:图6.1.1-2机场离港航班信息E-R图每一个航班号将会生成唯一一个表,表中存放具体航班号所有的航次详细信息,多张表的结构一样,具体航班航次详细记录信息E-R图如图6.1.1-3所示:图6.1.1-3具体航班航次详细记录信息E-R图实体联系图实体联系图如图6.1.2-1所示:图6.1.2-1实体联系图数据库表表是数据库中很重要的组成部分,通过表可以构建所有的数据关系,并且可以通过主键等设置来反映数据库的安全性。每张数据表都由不同的字段构成,并利用主、外键进行表之间的关联,非常的方便。在本系统中,因为涉及两个机场,机场记录又分为入港记录和离港记录,因此有四个结构相似的表,在下列介绍入港结构和离港结构。在本系统中,因为航班号不能唯一的代表一次飞行记录,而是代表一条航线或一架飞行,因此每次爬取数据时每一个航班号将会生成一个唯一的表,且它们的表结构一样,表名为各自航班号。下面介绍几个比较重要的表结构:入港航班航次记录信息表如表6.2-1所示:表6.2-1入港航班航次记录信息表字段名类型长度约束说明主键FlightIdvarchar255Notnull航次唯一ID主键Titlevarchar255Notnull所属公司无Identifiervarchar255Notnull航班号无Modelvarchar255无机型无Originvarchar255无来源地无Origincood1varchar255无来源地经度无Origincood2varchar255无来源地纬度无Urlvarchar255无航次网址无DepartureTimedatetime0无出发时间无ArrivalTimedatetime0无到达时间无Speedint0无速度无Weekvarchar255无星期五离港航班航次信息表如表6.2-2所示表6.2-2离港航班航次信息表字段名类型长度约束说明主键FlightIdvarchar255Notnull航次唯一ID主键Titlevarchar255Notnull所属公司无Identifiervarchar255Notnull航班号无Modelvarchar255无机型无Destinationvarchar255无目的地无Destinationcood1varchar255无目的地经度无Destinationcood2varchar255无目的地纬度无Urlvarchar255无航次网址无DepartureTimedatetime0无出发时间无ArrivalTimedatetime0无到达时间无Speedint0无速度无Weekvarchar255无星期五航班航次详细记录表如表6.2-3所示:表6.2-3航班航次详细记录表字段名类型长度约束说明主键FlightIdvarchar255Notnull航次唯一ID主键Oiatavarchar255无来源机场三字代码无Ocoordvarchar255无来源机场经纬度无Olocationvarchar255无来源机场城市无Diatavarchar255无目的机场三字代码无Dcoordvarchar255无目的地经纬度无Dlocationvarchar255无目的机场城市无Aircrafttype varchar255无机型无Takeofftimesdatetime0无起飞时间无Landingtimesdatetime0无到达时间无Speedint0无速度无系统实现爬虫设计正如系统名字,系统实现的功能首当其冲便是爬虫模块,在本系统中,根据爬取网站和数据类型的不同,拥有多个爬虫模块,代码量庞大,在此只介绍各个爬虫相同的部分并且介绍各个爬虫重要的部分。爬虫设计应用的是Python的Requests模块,通过向网站发送不同的请求来获取相应的数据。本系统的爬虫涉及多种数据类型因此并没有使用现有的爬虫框架,因此爬虫和数据存储代码量庞大。本次系统爬取的网站为:/live/首先从实时区域爬取部分来介绍最通用的部分,在本系统中多个爬虫代码都涉及到该网站的反爬策略,该策略为:每次向服务器发出请求时,会生成一个有一定时效性的Token串,该Token串藏在请求的网站页面中,该Token用于向服务器发送AJAX请求时组成URL,这样才可以获取到数据。因此需要将网站网页整个爬下寻找一个反爬Token,利用正则表达式解析HTML文件将其解析出来。例如图7.1-1爬虫示例1所示,该爬虫为实时爬取部分的爬虫模块代码的一部分,在本系统中有许多类似的代码。图7.1-1爬虫示例1在爬取数据时,有些数据需要发送AJAX请求,来获取数据JSON串,因此会涉及到一些其他参数(param),例如在爬取规定经纬度的实时航班时,需要涉及到经纬度参数获取,因此会用到如图7.1-2爬虫示例2所示的类似代码,在本次系统中用到的该种爬虫代码的模块局多。图7.1-2爬虫示例2通过规定经纬度来爬取指定区域的实时航班后,通过CSV文件来进行存储,存储格式代码和解析JSON串代码如图7.1-3和图7.1-4所示:图7.1-3解析和存储代码1图7.1-4解析和存储代码2在实时爬取部分还涉及到具体航班历史记录爬虫,因为该网站现航班记录和历史航班记录都有具体的HTML页面,因此需要将现航班记录URL和历史航班记录URL区分,分别设计为两个爬虫。在该部分需要爬取具体航班的历史记录时,在现航班记录HTML的反爬Token与爬取指定经纬度区域页面需要发送的反爬Token为分别独立的两个反爬Token,因此需要进行两个爬虫的数据拼接。流程为:首先爬取指定航班号现航班记录页面,提取反爬Token在进行URL拼接发送AJAX请求获取数据JSON串,关键代码如图7.1-5所示,解析JSON串和存储代码过于冗长在此不放出。图7.1-5爬取航班历史记录关键代码接下来介绍爬取机场数据的爬虫,无论是入港还是离港的机场数据获取都需要通过两个爬虫来进行爬取,流程为:首先爬取指定机场的HTML页面获取航班记录表格,通过BS4解析HTML文件获取需要的数据(如航班公司),之后通过航班号爬取历史航班记录页面获取其他需要的数据。同时获取航班记录时,因反复爬取数据次数量巨大,为了避免被网站封锁IP,通过设置爬虫延迟来模拟用户行为来避免被封锁IP爬虫关键代码如图7.1-6和图7.1-7所示,BS4解析和存储代码冗长在此不放出。图7.1-6机场爬虫关键代码1图7.1-7机场爬虫关键代码2图7.1-1和图7.1-2中的爬虫为获取浦东机场入港航班记录爬虫的关键代码,类似的代码还有获取浦东机场离港航班记录爬虫,虹桥机场入港、离港航班记录爬虫共三个爬虫,在此代码类似因此不再赘述。接下来介绍获取航线飞行轨迹的爬虫。为了在地图上展示某航班某次飞行的具体路线,因此设计了一个单独的爬虫来获取某次飞行路线的经纬度坐标点,展示效果将在下文数据分析部分放出。爬虫流程为:爬取该航班历史记录HTML页面寻找反爬Token后,拼接URL后向服务器发送AJAX请求获取JSON串,解析JSON串提取点经纬度坐标后存储在JSON文件中,为画图做准备,关键代码如图7.1-8所示(图中省略代码为部分解析代码):图7.1-8航线飞行轨迹爬虫 为了在使用PyQt5设计的窗口时程序运行不卡顿,使用多线程爬虫的方式使程序可以边进行爬取数据边进行系统其它操作。例如在爬取浦东虹桥机场数据时,因爬虫时间过长,可以边爬取边进行数据分析,因此单独设计一个类来设计线程,线程关键代码如图7.1-9所示:图7.1-9浦东虹桥机场爬虫线程关键代码数据库链接设计Python与Mysql数据库的链接比较简单,通常使用以下代码就可以建立与数据库的链接,在爬虫模块使用图7.2-1的方式链接数据库,将解析完成后的数据存储在列表或字典中,使用图7.2-2的方式来进行数据存储。所有的爬虫都使用下图类似的方法。图7.2-1与数据库建立链接图7.2-2存储数据在PyQt5窗口设计部分,使用单独的.py文件设计函数来进行数据库链接,文件名为dbconnect.py,关键代码如图7.2-3所示:图7.2-3dbconnect.py关键代码在图表生成模块,通常需要使用到数据库查询语句,因此图表生成模块统一使用图7.2-4的方式建立数据库链接,在查询数据时,查询出的数据通常需要使用pandas模块来对数据进行一定的处理或分析数据,生成字典或列表用于数据可视化,因此在图表生成模块使用图7.2-5的方式来查询数据。 图7.2-4建立数据库链接图7.2-5查询数据选择爬取分析部分界面(待美化)简单粗暴的界面设计,用户可以通过点击不同的按钮来进入到不同的分析部分,窗体代码文件为maWindow.py,窗体代码冗长不在此赘述,窗体效果如图7.3-1所示,跳转窗体代码如图7.3-2所示:图7.3-1选择爬取分析部分界面图7.3-2跳转代码浦东虹桥机场爬取分析部分机场航班展示查询模块点击上文中爬取浦东虹桥机场部分按钮后,将跳转到爬取并分析浦东虹桥机场窗体,窗体代码为pvgmain.py,如下图7.4.1-1所示:图7.4.1-1爬取并分析浦东虹桥机场窗体如上图可知,首先进入的是机场航班展示查询模块,该窗体中有两层QtabWidget,第一层将各个模块相互分离,第二层将模块的具体部分再细分。上图中显示的为浦东机场入港飞机航班查询展示界面,下方空白表格用于展示数据库中的航班数据,在图中右上角有一个刷新按钮,点击之后可以读取相应数据库中的数据,如数据库发生更新,可以反复点击刷新按钮进行表格更新,表格支持拖动大小和上下拉动浏览数据,点击后的效果如图7.4.1-2所示,关键代码如图7.4.1-3所示:图7.4.1-2点击刷新后显示数据图7.4.1-3刷新按钮关键代码在该界面中可以进行两种搜索,分别为使用飞机航次唯一ID进行搜索和航班号进行查询,查询均在该界面该tabWidget所对应的模块数据库,即本地浦东机场入港数据库中搜索(在离港飞机tabWidget界面时候就是查询本地浦东机场离港数据库,虹桥机场依次推类),本地数据库的记录来源于爬虫模块爬取的数据。使用飞机航次唯一ID进行查询时,在输入框输入类似于下方列表中的ID进行查询搜索,该ID为每个航班航次的唯一ID,因此搜索结果只会有一条,如果想继续浏览其他记录可以进行再次搜索或者点击刷新按钮,搜索效果图如图7.4.1-4所示,查询关键代码如图7.4.1-5所示:图7.4.1-4按ID查询效果图图7.4.1-5按ID查询关键代码另一种搜索方式按航班号查询,该查询在浦东机场入港数据数据库查询,使用航班号查询时,在对应输入框内输入想要查询的航班号即可,航班号的每条记录时间均不相同,例如每个航班号所代表的的飞机或代表的航线每天都会飞入浦东机场,因此每个航班号可以得到多个记录,如果想继续浏览其他记录可以进行再次搜索或者点击刷新按钮,查询效果图如图7.4.1-6所示,关键代码如图7.4.1-7所示:图7.4.1-6按航班号查询效果图图7.1.4-7按航班号查询关键代码右侧在地图上显示时间段内的航班为系统航线展示模块的一个小功能,分别在两个时间框内设定正确的时间后(时间格式为年/月/日小时:分钟),点击显示按钮将会生成航线图,该航线图对应的有四种,分别为浦东机场入港航线图、浦东机场离港航线图、虹桥机场入港航线图、虹桥机场离港航线图,每个航线图由对应的QtabWidget界面的按钮生成,下图图7.4.1-9为图7.4.1-6中界面设定参数点击显示按钮生成,即浦东机场入港航线图(该图7.4.1-9使用pyechart模块生成,该图表为动态图非静态图,文中只能显示静态图,将鼠标放在航线上可以显示航线信息,地图可以通过滚轮缩放,将鼠标放在点上可以显示点的基本信息和经纬度等,代码在下文放出)。图7.4.1-8为设定参数图。图7.4.1-8设定参数图图7.4.1-9浦东机场入港航线图 右侧为输入航班号获取飞机航程具体数据,在输入框中输入或不输入航班号点击获取按钮后可以进入到具体航班飞行历史展示模块,进入新窗体,该模块详细功能在下文介绍,点击获取后效果如图7.4.1-10所示: 图7.4.1-10点击获取后弹出新窗体上诉介绍为浦东机场入港航班数据查询展示模块,与此相似的模块还有浦东机场离港航班数据查询展示模块,虹桥机场航班数据查询展示机场,虹桥机场航班数据查询展示机场。点击界面上的QtabWidget的分页即可切换,因为四个模块的功能相似,在此功能不再赘述,图7.4.1-11、图7.4.1-12、图7.4.1-13为三个模块界面的展示。图7.4.1-11浦东机场离港数据查询展示图7.4.1-12虹桥机场入港数据查询展示图7.4.1-13虹桥机场离港数据查询展示机场爬虫界面点击上图中QtabWidget的爬虫分页按钮或者点击左边的蜘蛛按钮,即可跳转到爬分页,界面设计如图7.4.2-1所示,可以在对应的输入框中输入想要更新的数据量,点击开始爬取,图中共有4个爬虫,均为线程爬虫,可以同时运行并且不影响系统的其他操作,点击开始爬取后状态栏会提示相应爬虫开始爬取数据,爬取的数据会实时更新到相应的数据库效果图如图7.4.2-2所示:图7.4.2-1机场爬虫界面图7.4.2-2点击开始按钮效果图该模块对应的爬虫代码存储在“爬浦东机场.py”文件中爬虫关键代码在爬虫设计部分已经介绍,数据库存储部分也在上文中介绍过了,因为四个爬虫的代码相似,不同的地方只有解析存储时的部分结构名和表名不同,因此在此只展示其中一个爬虫的详细代码,图7.4.2-3为爬浦东机场.py文件总体浏览(代码量过大),图7.4.2-4至图7.4.2-8为浦东机场入港航班数据爬虫(其中包括爬取数据解析和存储部分,其中多次爬取部分代码类似因此折叠):图7.4.2-3爬浦东机场.py总览图7.4.2-4浦东机场入港航班数据爬虫1图7.4.2-5浦东机场入港航班数据爬虫2图7.4.2-6浦东机场入港航班数据爬虫3图7.4.2-7浦东机场入港航班数据爬虫4图7.4.2-8浦东机场入港航班数据爬虫5实时爬取分析部分点击图7.3-1右边的按钮即可进入实施爬取分析界面,窗体代码文件为pandas_pyqt.py,界面如图7.5-1所示:图7.5-1实时爬取分析界面首先介绍左上方爬虫部分,在四个对应的框中输入想要爬取的经纬度后(即一个方框区域)点击开始爬取按钮,便会进行爬虫爬取,爬取的数据保存在limtmapdetailfly.csv中,点击清空按钮会清空左侧输入框,当爬取完毕后,界面下方通知栏会提示爬取完毕,并且下方qtpandastable控件,即pandas表格会显示爬取下来的数据结果,该表格为pandas与PyQt5的扩展库生成,用于读取CSV文件并且支持增删改,点击edit即可进行编辑,表格右侧数据初始化按钮为一次爬取后数据的备份,如果不小心修改了表格并且没有点击保存数据可以点击初始化还原,点击保存数据后就会把修改后的表格保存到本地文件limtmapdetailfly.csv中。设置爬虫参数后点击开始爬取按钮后效果如图7.5-2所示: 图7.5-2点击开始爬取后效果图点击生成图表按钮将会跳出新窗口生成新图表,展示爬取下来的数据的航班在地图上的位置,该功能为图表分析中的一个功能,代码将在下文图表分析部分介绍,地图图表为动态图,本文中只能展示静态图,将鼠标放在飞机图标上可以显示航班号和地理坐标位置,支持滚轮放大放小,效果图如图7.5-3所示:图7.5-3实时航班地图展示 图7.5-2右上方为输入航班号获取飞机航程具体数据,在输入框中输入或不输入航班号点击获取按钮后可以进入到具体航班飞行历史展示模块,进入新窗体,即进入具体航班飞行历史展示模块界面。该部分的该模块和上文中浦东虹桥机场介绍的模块为同类型模块,在此同一介绍。在右上方输入航班号点击获取后,效果图如图7.5-4和图7.5-5所示:图7.5-4输入航班号图7.5-5航班飞行历史展示模块界面如上图7.5-5所示,输入的航班号会预设置在航班号输入栏,点击查询航班号后,将会对输入的航班号的相关数据进行爬虫爬取数据,并且存入数据库相应的表中(如库中无表将会创建表,表名为航班号),数据将展示在下方表格中,点击查询航班号按钮后如图7.5-6所示:图7.5-6点击查询航班号按钮效果图点击按钮后如上图,将会在上方的对应项中显示目前时间最接近现实时间的一次航班航次记录。点击生成当前航次路线图后,将根据左侧的航行ID,调用上文爬虫设计中介绍的飞行轨迹爬虫模块函数,对该次航行的飞行轨迹,即飞行路线数据进行爬取,并且生成图表在地图上展示,或将航行ID复制进下方输入框,点击生成也可以生成图表,效果图如图7.5-7所示:图7.5-7实时航线展示点击航班飞行规律日历图按钮后,将会对库中该航班号所有的记录的起飞时间进行统计分析,应用pandas模块进行整理,生成日历图,日历图为动态图,支持左下颜色提示、鼠标提示等功能,本文中只能展示静态图,日历图上将清楚的显示该航班一周七天每天的起飞时间和起飞时间段以及库中数据的次数,将鼠标放在方框上后可以看到起飞时间提示和在该时间段起飞的次数,并且会帮用户在图表标题下做出简单的总结,代码将在下文介绍,点击按钮后的效果图如图7.5-8所示:图7.5-8点击按钮生成图表效果图图表分析模块图表分析模块有许多功能,它们并没有笼统的在单个页面里,就像上文中所描述的一样,它们分布在各个模块中,因此在放在最后进行介绍。在这里将介绍一些重要代码以及图表设计。首先介绍比较集中的功能,位于浦东虹桥机场爬取分析模块部分中的图表分析模块,进去浦东虹桥机场分析模块后点击相应的QtabWidget的分页,或左侧的按钮后进入到相应的界面,如图7.6-1所示:图7.6-1图表分析界面在此界面中你可以点击按钮生成不同的图表,图表由库中的数据进行一定的分析和处理后根据一定的规律生成,用户可以根据自己的需求和设定参数选择生成图表,图表本身会反应一定的规律,用户可以从图表中发现或探索一定的规律。本文第八节将会举例图表分析模块的使用以及分析实例,在本节只对图表生成以及效果图做介绍。首先介绍左侧的时间段机场流量图,本系统中一共可以生成三种时间段折线图,分别为单日,一周,某月三种时间段,用户可以填入自己需要的时间段数据,点击按钮,系统将自动生成图表并弹出。三种折线图的设计上大体相同,且分析部分也区别不大,但代码量冗长,因此以分析单日浦东虹桥机场航班流量折线图为例。分析单日浦东虹桥航班流量效果图如图7.6-2所示:图7.6-2单日折线图生成图表的函数代码存放在onedayflowanalysis.py文件中,通过sql查询语句访问数据库,查询指定时间的航班航次数量,根据每小时时间段来统计各个机场入港离港每小时的流量,存放在数组中用于生成图表备用,例如浦东机场入港按小时段流量统计如图7.6-3所示:图7.6-3浦东机场入港流量分小时统计类似的本函数中的代码还有浦东机场离港流量分小时统计,虹桥机场入港流量分小时统计,虹桥机场离港流量分小时统计。生成图表使用了Pyechart中的折线图,生成图表的关键代码如图7.6-4所示,生成的图表保存在本系统文件夹中的drawmap文件夹中,文件名为line_base.html。图7.6-4生成折线图关键代码与此类似的代码还有分析一周航班流量折线图和分析某月航班流量折线图,他们的代码分别存放在oneweekflowanalysis.py和onemonthflowanalysis.py中,因代码冗长并且与上述分析单日流量的代码类似,因此在此只展示生成图表关键代码和效果图。图7.6-5为分析一周航班流量折线效果图,图7.6-6为生成图表关键代码,图7.6-7为分析某月航班流量折线效果图,图7.6-8为生成图表关键代码。图7.6-5一周流量折线图图7.6-6关键代码图7-6-7某月流量折线图(编写时库中数据暂时只有7天)图7.6-8关键代码接下来介绍桑基图,桑基图可以直观的反应出各大城市的航班更喜欢飞往哪个机场,效果图如图7.6-9所示,关键代码如图7.6-10所示,代码存放在sankeydraw.py文件中,该图为动态图,将鼠标放在条例上可以显示一些基本信息,本文中只能展示静态图。图7.6-9桑基图各大城市联通城市TOP10图7.6-10关键代码通过生成机场机型占比数量饼图,我们可以清楚的知道浦东和虹桥机场中来往航班机型数量的占比,效果图7.6-11所示,关键代码为图7.6-12,图7.6-13和图7.6-14所示,代码存放在hotflighttype.py文件中,生成效果图表为动态图,文中只能展示静态图。图7.6-11机场机型占比饼图图7.6-12关键代码1图7.6-13关键代码2图7.6-14关键代码3同时也可以生成某段时间内机场热门航空公司饼图,了解某段时间内哪一家航空公司在该机场的航班最多。效果图如图7.6-15所示,关键代码如图7.6-16所示,代码存放在hottitledraw.py文件中。图7.6-15机场热门公司TOP10饼图图7.6-16关键代码可以生成柱状图和饼状图综合图表来详细分析各大热门航空公司与热门机型的关系,以浦东机场为例,生成的综合图表效果图如图7.6-17,关键代码如图7.6-18所示,代码存放在barandpiedraw.py文件中。图7.6-17综合图表效果图图7.6-18关键代码接下来介绍分布在各个模块中的图表分析功能,首先介绍位于航班航次查询展示模块中的航线展示模块,通过设定时间段参数,生成图表该时间段内飞往机场或离开机场飞往世界各地在地图上展示航线,该图表划分四种,分别为浦东机场入港航线图、浦东机场离港航线图、虹桥机场入港航线图、虹桥机场离港航线图,代码存放在pvgamapdraw.py,pvgdmapdraw.py,shaamapdraw.py,shadmapdraw.py四个文件中,下图以浦东机场入港焊线图为例为例,如设定参数图7.6-19,效果图7.6-20,关键代码如图7.6-21所示:图7.6-19参数设定图图7.6-20浦东机场入港航线图图7.6-21关键代码实时航班地图展示功能位于实时爬取分析模块中,是图表分析模块的功能之一,更具设定的经纬度参数范围来展示实时爬取下来的航班在地图上的具体位置,根据经纬度的范围大小不同,生成的地图也不同,分为中国地图和世界地图,代码存放在allflightdraw.py文件中,效果图如图7.6-22和图7.6-23所示,关键代码如图7.6-24所示:图7.6-22实时航班地图中国地图图7.6-23实时航班地图世界地图图7.6-24关键代码最后是具体航班的航线展示功能,位于具体航班飞行历史展示模块中,是图表分析的功能之一,在上文中有过介绍,代码存放在draw.py文件中,效果图位图7.6-25所示,关键代码如图7.6-26所示:图7.6-25具体航班航线展示效果图图7.6-26关键代码系统测试与分析应用首先进入系统,开始测试实时爬取分析模块,点击右侧按钮,进去模块,如图8-1和图8-2所示:图8-1开始界面图8-2进入实时爬取分析模块我们爬取上海临港地区的实时航班数据,测试时间2021年5月7日15时54分,经纬度设置以及爬取结果如图8-3所示:图8-3爬取临港地区实时航班数据可以从上图看到共有5架航班目前在临港地区附近飞行,我们点击生成图表查看位置。如图8-4所示图8-4临港地区实时航班我们将表中记录删除至只剩两行后点击保存数据,再次点击生成图表查看航班位置,生成的图表上只有两架飞机,说明保存数据成功,如图8-5和图8-6所示:图8-5删除数据后点击保存数据图8-6再次生成的图表点击图8-5中的获取按钮,进入具体航班数据查询界面,我们爬取上图中的航班号CSN9673航班记录,如图8-7所示:图8-7爬取航班号CSN9673的记录点击生成当前航次路线图来查看该航班此时的飞行路线图,如图8-8所示:图8-8CSN9673当前航次飞行轨迹由于该航班网站的上的记录过少,我们更换航班号为AAL9700来分析该航班的起飞规律,点击生成航班飞行规律日历图来了解该航班的起飞规律如图8-9,由图可知这架飞机在记录中每周周一至周日都有航程,并且该航班通常在每天的22:00起飞,少数在19:00起飞,作为用户,如果我想购买该航班的机票,我可以清楚的通过图表知道该航班通常一周七天都有航次,并且该航班通常在晚上10点起飞。图8-9日历图接下来测试机场爬取分析部分,从开始界面点击左侧按钮,进入机场爬取分析模块如图8-10所示:图8-10机场爬取与分析界面点击刷新来查看一下浦东机场入港库中现有的数据,如图8-11所示:图8-11点击刷新分别根据ID和航班号来查询一下数据,如图8-12和图8-13所示:图8-12查询ID图8-13查询航班号设定时间2021年5月1日0点和2021年5月1日6:00,点击显示查看航班路线展示,如图8-14和图8-15所示:图8-14设定参数图8-15航线图点击获取按钮进入航班具体数据模块界面,如图8-16所示:图8-16点击获取进入界面进入爬虫界面,设定爬虫参数开始爬取数据,可以看到后台输出爬取的数据,如图8-17和图8-18所示:图8-17设定参数点击按钮图8-18开始爬取数据点击图表分析按钮进入图表分析模块,如图8-19,首先我们分析一下五一假期的航班流量,想必航班流量一定大增,我们生成五月一日的分时航班流量,如图8-20所示:图8-19进入图表分析界面图8-20五一单日分时流量折线图从上图中可以清楚地看出在2021年5月一日这一天,虹桥机场和浦东机场的入港离港分时流量,我们首先分析一下浦东机场,我们点击上方按钮来关闭两条虹桥机场的折线,如图8-21所示:图8-21关闭虹桥相关折线图由上图可知,这一天较多的航班入港和离港时间都是在早上9点之后,图中曲线有一个明显的攀升,入港航班峰值最高的时间段位下午15点~16点,数量为48航班;离港航班峰值最高的时间段为晚上19点~20点,数量为37航班。再打开虹桥的折线进行对比,如图8-22所示,虹桥机场较多的航班入港时间和离港时间也是在早上9点之后,与浦东机场的规律相同,但无论是入港峰值还是离港峰值,都没有浦东机场高,并且整天流量也没有浦东机场高,折线对比如图8-20所示,可见在五月一日这一天,浦东机场的航班流量更大,可以推测更多的人偏爱购买浦东机场相关的机票。图8-22虹桥机场五月一日折线图我们再来分析五一小长假整体的航班流量,设定参数后点击生成按钮,如图8-23所示:图8-23五一长假流量折线图(等数据改)由上图可知,虹桥与浦东机场在五月一日这一天的航班流量是均为最高,并且从图中可以明显看出浦东机场的入港出港航班流量两条折线明显高于虹桥机场,即浦东机场的流量在五一小长假大于虹桥气场;整体曲线呈现顶峰下降再上升再下降的趋势,因为大多人出行都是五月一日出发,在假期收假的五月五日购买机票飞回,所以可以看到四条折线在五月五日这一天有所回升,假期结束后即五月六日和五月七日,折线开始回落。现在我们来分析一下五一小长假期间热门航班公司和机型。设定时间参数,点击生成图表来生成五一小长假期间最热门的航班公司TOP10饼状图,如图8-24和图8-25所示:图8-24设定参数图图8-25五一期间(5/1-5/5)热门航班公司饼状图由图可知浦东和虹桥机场在五一期间的热门航班公司TOP10均为中国的航空公司,并且两个机场均为中国东方航空公司最为热门,浦东机场占比32.31%,航班流量为1553条,虹桥机场占比35.42%,航班流量为1224条。可见中国东方航空公司深受大家喜爱。我们还可以通过饼状图的大小和占比比对,相同航空公司,如吉祥航空公司,在浦东机场较虹桥机场更受欢迎,而上海航空公司在虹桥机场较浦东机场更受欢迎。我们再分析一下热门机型,同样分析时间为五一期间,点击生成按钮生成饼状图如图8-26所示:图8-26热门机型TOP10由图可知,两机场在五一期间最热门的机型为A320,A320为人们常说的中机型航班飞机,载客为180人左右,机票价格通常较大机型便宜,并且适合中短途飞行(如国内飞行),因此在图中占比最大也在意料之中。在饼图中热门机型多为中型机,但也有大型机上热门榜,如B77W。接下来我们生成热门航空公司热门机型五一期间流量综合图来查看整体情况,以浦东机场为例,如图8-27所示:图8-27综合图例这样来看就可以知道很多信息了,先从中国东方航空公司入手,可见在浦东机场中国东方航空公司在五一期间完全没有使用热门机型中B77L和A330的航班,他们的航班数量为零,并且中国东方航空公司的A320航班流量远远超出其他热门机型,而吉祥航空公司除了使用A320和A321机型的航班在流通浦东机场,使用其他热门机型的航班完全没有,中国春秋航空公司更是只有使用机型A320的航班流通在浦东机场。上海航空公司则没有航班使用最热门的A320机型在五一期间流通于浦东机场,使用的是次于A320热门的B738,B738同样为中型机。中国南方航空公司在五一期间流通于浦东机场最多的则是A321机型。更多的信息在此不再赘述。在了解完热门公司和热门机型以后,我们也像了解一下五一期间(5.1-5.5)与浦东机场和虹桥机场来往最多的城市(从该城市飞往浦东或虹桥),我们设定时间点击生成桑基图按钮,生成的效果图如图8-28和图8-29所示:图8-28联通城市TOP10桑基图1图8-29联通城市TOP10桑基图2在上文的分析中我们可知,浦东机场的流量在五一期间基本是大于虹桥机场的,但如上两图中,飞往的虹桥航班要多于飞往浦东的航班。我们观察图表发现虽然浦东机场的航班流量在上文中比较大,但是飞往浦东机场的航班来源地非常多,且前十名的来源地的航班数量都相差不大(将鼠标移至图表分支上可以看到数量),因此在此图表中总和就较少。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- CCAA - 2024年08月服务认证基础答案及解析 - 详解版(48题)
- 养老院康复训练制度
- 企业员工培训与绩效提升制度
- 人教版(2026)八年级下册英语Unit 1寒假预习讲义(含练习题及答案)
- 2025年浙江建设技师学院招聘考试真题
- (新教材)2026年春期部编人教版三年级下册语文教学计划及进度表
- 级心理咨询师真题模拟及答案
- 蒸呢机挡车工风险评估与管理能力考核试卷含答案
- 我国上市公司知识产权信息披露:问题剖析与优化路径
- 我国上市公司治理结构有效性的深度剖析与路径探索
- 娱乐场所安全管理规定与措施
- GB/T 45701-2025校园配餐服务企业管理指南
- 电影项目可行性分析报告(模板参考范文)
- 老年协会会员管理制度
- LLJ-4A车轮第四种检查器
- 大索道竣工结算决算复审报告审核报告模板
- 2025年南充市中考理科综合试卷真题(含标准答案)
- JG/T 3049-1998建筑室内用腻予
- 人卫基础护理学第七版试题及答案
- 烟草物流寄递管理制度
- 河北审图合同协议
评论
0/150
提交评论