Python 获取航班状态
“航班状态”是指航班的当前状况,例如是否按时、延误或取消。您可以通过访问航空公司的网站并输入航班号码或出发和到达机场来了解航班的状态。然后,使用BeautifulSoup模块从HTML页面中获取必要的数据,并用于判断航班是否按时、延误或取消。为了获取本博客文章的航班状态,我们将使用Python。
安装
在开始之前,务必在您的计算机上安装Python和BeautifulSoup库。请打开终端并使用pip完成安装。
pip install requests
pip install beautifulsoup4
步骤
导入所需库 – 该程序所需的库是’requests’, ‘BeautifulSoup’和’datetime’。
- 定义’get_flight_details’函数,该函数接受’airline_code’,’flight_number’,’date’,’month’和’year’作为输入参数。
-
定义’get_data’辅助函数,从URL中检索HTML数据。
-
使用输入参数和FlightStats网站的格式构建URL。
-
使用’get_data’辅助函数和URL检索HTML数据。
-
使用BeautifulSoup解析HTML数据并返回已解析的HTML数据。
-
定义’get_airport_names’函数,该函数接受解析的HTML数据作为输入。
-
从解析的HTML数据中检索机场名称并打印航班号码,航班名称,起飞和降落机场。
-
定义’get_flight_status’函数,该函数接受解析的HTML数据作为输入。
-
从解析的HTML数据中检索登机口号码,状态和时间状态详细信息,并将它们打印出来。
-
为航空公司代码,航班号码,当前日期,日期,月份和年份定义输入参数。
-
使用输入参数调用’get_flight_details’函数以检索解析的HTML数据。
-
使用解析的HTML数据调用’get_airport_names’函数以检索和打印机场名称。
-
使用解析的HTML数据调用’get_flight_status’函数以检索和打印航班状态详细信息。
请注意,我们将使用CSS选择器和BeautifulSoup提供的find()函数来抓取以下图片中突出显示的元素。
示例
import requests
from bs4 import BeautifulSoup
from datetime import datetime
def get_flight_details(airline_code, flight_number, date, month, year):
def get_data(url):
response = requests.get(url)
return response.text
# Construct URL using input parameters
url = f"https://www.flightstats.com/v2/flight-tracker/{airline_code}/{flight_number}?year={year}&month={month}&date={date}"
# Get HTML data from URL
html_data = get_data(url)
# Parse HTML using BeautifulSoup
soup = BeautifulSoup(html_data, 'html.parser')
# Return parsed HTML data
return soup
def get_airport_names(soup):
airport_names = [
i.get_text()
for i in soup.find_all(
"div", class_="text-helper__TextHelper-sc-8bko4a-0"
)
]
print("Flight No:", airport_names[0])
print("Flight Name:", airport_names[1])
print("FROM:", airport_names[2], airport_names[3])
print("TO:", airport_names[4], airport_names[5])
def get_flight_status(soup):
gates = [
data.get_text()
for data in soup.find_all(
"div",
class_="ticket__TGBLabel-s1rrbl5o-15 gcbyEH text-helper__TextHelper-sc-8bko4a-0 efwouT",
)
]
gate_numbers = [
data.get_text()
for data in soup.find_all(
"div",
class_="ticket__TGBValue-sc-1rrbl5o-16 hUgYLc text-helper__TextHelper-sc-8bko4a-0 kbHzdx",
)
]
statuses = [
i.get_text()
for i in soup.find_all(
"div", class_="text-helper__TextHelper-sc-8bko4a-0 feVjck"
)
]
time_statuses = [
i.get_text()
for i in soup.find_all(
"div", class_="text-helper__TextHelper-sc-8bko4a-0 kbHzdx"
)
]
print("Gate No: ", gate_numbers[0])
print("Status: ", statuses[0])
print(f"FROM: {time_statuses[0]} | TO: {time_statuses[2]}")
# Input parameters
airline_code = 'AA'
flight_number = '1'
current_date = datetime.now()
date = str(current_date.day+1)
month = str(current_date.month)
year = str(current_date.year)
soup = get_flight_details(airline_code, flight_number, date, month, year)
get_airport_names(soup)
get_flight_status(soup)
输出
Flight No: AA 1
Flight Name: American Airlines
FROM: JFK New York
TO: LAX Los Angeles
Gate No: 8
Status: On time
FROM: 07:15 EDT | TO: 10:35 PDT
BeautifulSoup模块解析HTML数据,并根据输入参数从FlightStats网站收集航班信息。该脚本将get_flight_details()、get_airport_names()和get_flight_status()指定为其两个主要函数。使用输入参数,get_flight_details()函数创建URL,使用requests库向该URL发送GET请求,然后从响应中检索HTML数据。然后,使用BeautifulSoup解析HTML数据,并返回处理后的HTML数据。
使用BeautifulSoup,get_airport_names()函数从解析的HTML数据中获取机场名称。然后打印出航班号、航班名称、出发机场名称、到达机场名称和机场代码。解析的HTML数据同样被get_flight_status()方法接受,并利用BeautifulSoup检索航班状态信息。然后打印出登机口号码、当前航班状态、出发时间和到达时间。当初始化输入参数(包括航空公司代码、航班号、日期、月份和年份)时,主要脚本使用get_flight_details()方法来接收解析的HTML数据。为了提取和输出机场名称和航班状态信息,它随后调用get_airport_names()和get_flight_status()方法。
应用
乘客、航空公司工作人员和数据分析师都可以从实时访问航班数据中获得好处。可以自动化从多个网站收集航班信息的过程,使其更快更高效。借助Python和BeautifulSoup,可以实现这一点。旅客将赞赏能够在不必打电话给航空公司或访问多个网站的情况下检查航班状态。熟知航空业的专业人士将作出人员、航班编排和其他决策。信息检查人员可以查看航空旅行的模式和趋势,预测未来的需求和减少需求,并寻找提高效率和降低成本的机会。
结论
本文探讨了网络爬虫及其如何从网站中提取信息。它涵盖了使用Python库如BeautifulSoup和Requests以及Web爬取的基础知识,包括HTML、CSS和文档对象模型(DOM)。之后,使用一个简单的Python脚本从FlightStats网站提取航班信息,并提供了一个逐步的Web爬虫教程。在进行Web爬取时,要注意法律和道德考虑,例如遵守网站的服务条款并避免过多的数据请求,以免超载其服务器。