飞机去哪了~爬虫篇

认识一下我们的数据采集源

提示:本期文章只教爬虫哦!
该网站拥有大量的飞机航行数据,并且,毫无反爬机制。



如何找到数据在哪?

首先,你要对web了解一些基础知识,本次演示以chrome浏览器作为教学用例,以pycharm作为教学演示工具,那么开始吧!
FlightAware传送门
看人家网页做的真棒
接下来使用开发者工具,F12按键。找到这样类型的文件
在这里插入图片描述在这里插入图片描述
复制链接哦!
在浏览器中打开看是这样的。
在这里插入图片描述
没错,这就是我们要找的数据源。


爬虫(Spider🕷)

既然要做一个爬虫,很明显,我们要有一个脑袋,写一个headers吧!

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/83.0.4103.61 Safari/537.36 "
}

接下来引用requests模块中的get方法,一定要把headers对象传进去哦!像这样。

response = requests.get(url, headers=headers)

之后一定要将response对象json化,不然数据无法提取。
然后嘛,分解response对象json化后的目标对象,就可以获取你想要的数据啦!
设计token获取函数,要用到匹配方法哦!确保后面的数据获取的有实时性。

#获取自动token
def get_token():
    url = "https://zh.flightaware.com/live/map"
    r = requests.post(url)  # 发送post请求
    texts = r.text[r.text.rfind('"VICINITY_TOKEN":"'):][18:58]
    return texts

设计数据获取函数:

# 爬取数据并将数据进行保存
def dataSavedFunction(url):
    # 获取json文件并将文件转化为列表/字典格式
    response = requests.get(url, headers=headers)
    jsonResponse = response.json()
    # 遍历json处理后的数据并将相关数据添加到相应的空列表
    # print(jsonResponse)
    dataCollection = []
    length=len(jsonResponse["features"])
    for i in range(length):
        try:
            dataCollection.append([
                jsonResponse["features"][i]["properties"]["flight_id"], 
                jsonResponse["features"][i]["geometry"]["coordinates"][0],
                jsonResponse["features"][i]["geometry"]["coordinates"][1],
                jsonResponse["features"][i]["properties"]["direction"],
                jsonResponse["features"][i]["properties"]["groundspeed"],
                jsonResponse["features"][i]["properties"]["landingTimes"]["estimated"],
                jsonResponse["features"][i]["properties"]["altitude"]
            ])
        except KeyError:
            dataCollection.append([
                "",
                jsonResponse["features"][i]["geometry"]["coordinates"][0],
                jsonResponse["features"][i]["geometry"]["coordinates"][1],"","","",""
            ])
    return dataCollection

列表对应的数据为"航班号",“经度”,“纬度”, “航向”,“速度”,“到达终点时间”,“高度”。
这里就不限制大家的优秀idea了!

成果展示

数据爬取的成果展示

在这里插入图片描述

可视化展示+数据分析效果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
生活窘迫,制作不易,此代码售价¥50

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炼丹小白师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值