在本指南中,我们将使用 Python 抓取 Google 航班数据。为什么?现在,人们通过 Google 航班等在线平台预订航班,因为它为他们提供了有关搜索最佳价格、合适时间、预订住宿的更多详细信息,当然,还帮助他们找到最佳航班优惠。Google 航班简化了比较不同航空公司票价的过程,并为希望做出明智决定的旅行者提供了宝贵的见解。

那么,让我们深入了解为什么应该抓取 Google 航班数据、可以从中提取的关键数据点,并学习如何像专业人士一样进行抓取。

如果您想直接进入 Google 航班网页抓取工具,请点击 点击这里.

目录

  1. 为什么要抓取 Google 航班信息?
  2. Google Flights 关键数据点
  3. 如何用 Python 抓取 Google 航班
  • 安装先决条件
  • 从 Google Flights 中抓取公司名称
  • 从 Google Flights 中抓取航班持续时间
  • 从 Google 航班上抓取价格
  • 从 Google 航班中抓取出发和到达日期
  • 从 Google Flights 中抓取航班二氧化碳排放量
  • 从 Google Flights 中抓取航班停靠点
  • 完成代码
  1. 使用 Crawlbase 抓取 Google Flights 的可扩展网络
  2. 总结
  3. 常见问题

为什么要抓取 Google 航班信息?

抓取谷歌航班的好处

Google Flights 的抓取工具为旅行者、企业和研究人员提供了宝贵的见解和竞争优势。通过从 Google Flights 中提取数据,用户可以访问有关航班选项、价格、时刻表等的信息。这些数据可用于比较不同航空公司的票价、分析价格和可用性趋势,并在计划旅行时做出明智的决定。

对于旅行者来说,抓取 Google Flights 可以帮助找到最优惠的价格并优化旅行行程。对于旅游业的企业,例如航空公司、旅行社和连锁酒店,抓取 Google Flights 可以提供有价值的市场情报和竞争分析。研究人员还可以利用从 Google Flights 中抓取的数据来研究旅行模式、消费者行为和行业趋势。

总体而言,抓取 Google Flights 提供了一个强大的工具来访问和分析航班相关数据,使用户能够做出更明智的决策并在旅行市场中获得竞争优势。

Google Flights 关键数据点

在网络抓取 Google Flights 时,可以提取几个关键数据点,为旅行者和企业提供有价值的见解:

谷歌航班数据点
  1. 航班价格:最重要的数据点之一,航班价格根据航空公司、预订时间和目的地等因素而有所不同。抓取 Google Flights 允许用户监控和比较不同航空公司和航线的价格。
  2. 飞行时间:了解航班持续时间对于旅客规划行程至关重要。抓取的数据可以深入了解特定出发地和目的地之间的航班长度。
  3. 出发和抵达日期:抓取 Google 航班可以显示特定日期的航班可用性,帮助旅行者找到最方便的旅程出发和到达时间。
  4. 飞行二氧化碳排放量:随着人们对环境问题的认识不断增强,许多旅行者有兴趣最大限度地减少碳足迹。网页抓取 Google Flights 可以提供航班二氧化碳排放量的数据,让旅客能够做出更环保的旅行选择。
  5. 航班经停:了解飞行路线上经停的数量和位置对于旅客规划行程至关重要。抓取的数据可以揭示有关中途停留、转机航班和中途停留目的地的信息。

通过从 Google 航班中提取这些关键数据点,用户可以在预订航班时做出更明智的决定,优化旅行体验并最大限度地节省成本。此外,旅游行业的企业可以使用 Google 航班抓取工具利用抓取的数据进行市场分析、定价策略和竞争情报。

如何用 Python 抓取 Google 航班

让我们快速进入第一步,当然是设置环境以构建自定义 Google Flights 抓取工具。

安装先决条件

设置抓取 Google Flights 的环境需要确保正确安装和配置所有必要的工具和库。请按照以下步骤设置环境:

Python安装:在继续之前,请确保您的系统上已安装 Python。您可以通过打开终端或命令提示符并输入以下命令来检查 Python 是否已安装:

1
python --version

如果未安装Python,请从Python官方网站下载并安装最新版本。

虚拟环境:建议创建一个虚拟环境来管理项目依赖关系,避免与其他Python项目冲突。导航到终端中的项目目录并执行以下命令以创建名为“google_flights_env”的虚拟环境:

1
python -m venv google_flights_env

根据您的操作系统运行适当的命令来激活虚拟环境:

  • 在Windows上:

    1
    2
    google_flights_env\脚本\激活

  • 在 macOS/Linux 上:

    1
    资源 google_flights_env/bin/activate

安装所需的库:激活虚拟环境后,安装网页抓取所需的Python库。您需要的主要库是 requests 和 BeautifulSoup4。执行以下命令来安装它们:

1
2
点安装请求
点安装beautifulsoup4

代码编辑器:选择代码编辑器或集成开发环境 (IDE) 来编写和运行 Python 代码。受欢迎的选项包括 PyCharm, Visual Studio代码Jupyter笔记本。安装您首选的代码编辑器并确保其配置为与 Python 一起使用。

通过执行这些步骤,您将拥有一个正确配置的环境,可以使用 Python 进行网络抓取 Google Flights 数据。安装了必要的工具和库后,让我们开始从网站中提取各种关键信息。

抓取 Google 航班 公司名称:

要从 Google Flights 中抓取公司名称(航空公司),您可以使用 BeautifulSoup 解析 HTML 并找到包含航空公司信息的元素。

抓取谷歌航班公司名称

这是一个函数:

1
2
3
DEF scrap_company_name(清单):
航空公司元素 = 列表.select_one('div.Ir0Voe div.sSHqwe')
回报 Airlines_element.text.strip()

抓取 Google Flights 航班持续时间:

提取飞行时间需要找到包含此信息的相关 HTML 元素并检索其文本内容。

抓取谷歌航班持续时间

你可以这样做:

1
2
3
DEF scrape_flight_duration(清单):
持续时间元素 = 列表.select_one('div.AdWm1c.gvkrdb')
回报 持续时间元素.text.strip()

抓取 Google 航班价格:

Google Flights 上的价格通常会显示在显着位置,因此相对容易抓取。您可以找到价格元素并提取其文本内容。

刮谷歌航班价格

这是一个函数:

1
2
3
DEF 抓取价格(清单):
价格元素 = 列表.select_one('div.U3gSDe div.FpEdX 跨度')
回报 Price_element.text.strip()

抓取 Google 航班出发和到达日期:

出发和抵达日期对于旅客来说至关重要。您可以找到包含此信息的元素并提取日期值。

抓取谷歌航班出发和到达日期

你可以这样做:

1
2
3
4
DEF scrape_出发_到达_日期(清单):
出发日期元素 = 列表.select_one('span.mv1WYe span:first-child [jscontroller="cNtv4b"] span')
到达日期元素 = 列表.select_one('span.mv1WYe span:last-child [jscontroller="cNtv4b"] span')
回报 出发日期元素.text.strip()、到达日期元素.text.strip()

刮取 Google 航班二氧化碳排放量:

Google Flights 有时会显示有关航班二氧化碳排放量的信息。您可以通过定位相关 HTML 元素并检索其文本内容来提取此数据。

刮掉谷歌航班二氧化碳排放量

这是一个代码片段:

1
2
3
DEF scrape_co2_排放(清单):
co2_element = 列表.select_one('div.V1iAHe div.AdWm1c')
回报 co2_element.text.strip()

抓取 Google 航班经停站:

要提取有关航班停靠点(中途停留)的信息,请找到相关的 HTML 元素并检索其文本内容。

抓取谷歌航班停靠点

你可以这样做:

1
2
3
DEF scrape_flight_stops(清单):
stop_element = 列表.select_one('div.EfT7Ae span.ogfYpf')
回报 stop_element.text.strip()

完成代码:

下面是结合了上面提到的所有抓取功能的完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# 导入必要的库
bs4 进口 美丽汤
进口 要求
进口 JSON

# 从 Google Flights 中抓取列表元素的函数
DEF scrap_listings():
回报 汤.选择('li.pIav2d')

# 从航班列表中抓取公司名称的函数
DEF scrap_company_name(清单):
航空公司元素 = 列表.select_one('div.Ir0Voe div.sSHqwe')
回报 Airlines_element.text.strip()

# 从航班列表中抓取航班持续时间的函数
DEF scrape_flight_duration(清单):
持续时间元素 = 列表.select_one('div.AdWm1c.gvkrdb')
回报 持续时间元素.text.strip()

# 从航班列表中抓取价格的函数
DEF 抓取价格(清单):
价格元素 = 列表.select_one('div.U3gSDe div.FpEdX 跨度')
回报 Price_element.text.strip()

# 从航班列表中抓取出发和到达日期的函数
DEF scrape_出发_到达_日期(清单):
出发日期元素 = 列表.select_one('span.mv1WYe span:first-child [jscontroller="cNtv4b"] span')
到达日期元素 = 列表.select_one('span.mv1WYe span:last-child [jscontroller="cNtv4b"] span')
回报 出发日期元素.text.strip()、到达日期元素.text.strip()

# 从航班列表中删除航班二氧化碳排放量的功能
DEF scrape_co2_排放(清单):
co2_element = 列表.select_one('div.V1iAHe div.AdWm1c')
回报 co2_element.text.strip()

# 从航班列表中抓取航班停靠点的功能
DEF scrape_flight_stops(清单):
stop_element = 列表.select_one('div.EfT7Ae span.ogfYpf')
回报 stop_element.text.strip()

# 主功能
DEF ():
# 向 Google Flights URL 发出请求并解析 HTML
网址= 'https://www.google.com/travel/flights/search?tfs=CBwQAhopEgoyMDI0LTA3LTE0ag0IAxIJL20vMDFmMDhycgwIAxIIL20vMDZ5NTcaKRIKMjAyNC0wNy0yMGoMCAMSCC9tLzA2eTU3cg0IAxIJL20vMDFmMDhyQAFIAXABggELCP___________wGYAQE&hl=en-US&curr=EUR'
响应 = requests.get(url)
汤 = BeautifulSoup(response.text, 'html.parser')

# 抓取航班列表
清单= scrape_listings(汤)

# 遍历每个列表并提取航班信息
航班数据 = []
清单 in 列表:
公司名称 = scrape_company_name(列表)
飞行持续时间= scrape_flight_duration(列表)
价格 = scrape_price(列表)
出发日期,到达日期 = scrape_departure_arrival_dates(列表)
co2_emission = scrape_co2_emission(列表)
停靠点= scrape_flight_stops(列表)

# 将航班信息存储在字典中
航班信息 = {
'公司名称': 公司名称,
'航班持续时间':航班持续时间,
'价格': 价格,
'出发日期': 出发日期,
'到达日期': 到达日期,
'co2_排放':二氧化碳排放量,
‘停止’: 停止
}

航班数据.append(航班信息)

# 将结果保存到 JSON 文件
- 打开(“google_flights_data.json”, 'w') as json_文件:
json.dump(flight_data, json_file, 缩进=4)

if __名字__ == “__主要的__”:
主()

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
[
{
“公司名称”: 「宿雾太平洋」,
“航班持续时间”: “29 小时 35 分钟”,
“价钱”: “924 欧元”,
“出发日期”: “晚上 10 点 10 分”,
“到达日期”: “上午 9:45+2”,
“二氧化碳排放量”: “741 千克二氧化碳当量”,
“停止”: “1站”
},
{
“公司名称”: “菲律宾航空”,
“航班持续时间”: “31 小时 5 分钟”,
“价钱”: “1,146 欧元”,
“出发日期”: “晚上 7 点 40 分”,
“到达日期”: “上午 8:45+2”,
“二氧化碳排放量”: “948 千克二氧化碳当量”,
“停止”: “1站”
},
{
“公司名称”: “中国南方航空”,
“航班持续时间”: “25 小时 10 分钟”,
“价钱”: “1,164 欧元”,
“出发日期”: “凌晨 1 点 15 分”,
“到达日期”: “上午 8:25+1”,
“二氧化碳排放量”: “1,092 千克二氧化碳当量”,
“停止”: “1站”
},
{
“公司名称”: “中国南方航空”,
“航班持续时间”: “36 小时 25 分钟”,
“价钱”: “1,110 欧元”,
“出发日期”: “凌晨 1 点 15 分”,
“到达日期”: “晚上 7:40+1”,
“二氧化碳排放量”: “1,134 千克二氧化碳当量”,
“停止”: “1站”
},
{
“公司名称”: “中国南方航空”,
“航班持续时间”: “40 小时 30 分钟”,
“价钱”: “1,110 欧元”,
“出发日期”: “晚上 9 点 10 分”,
“到达日期”: “晚上 7:40+2”,
“二氧化碳排放量”: “985 千克二氧化碳当量”,
“停止”: “1站”
},
{
“公司名称”: “中国南方航空”,
“航班持续时间”: “29 小时 15 分钟”,
“价钱”: “1,164 欧元”,
“出发日期”: “晚上 9 点 10 分”,
“到达日期”: “上午 8:25+2”,
“二氧化碳排放量”: “943 千克二氧化碳当量”,
“停止”: “1站”
},
{
“公司名称”: “斯里兰卡”,
“航班持续时间”: “33 小时 55 分钟”,
“价钱”: “1,199 欧元”,
“出发日期”: “晚上 11 点 00 分”,
“到达日期”: “晚上 2:55+2”,
“二氧化碳排放量”: “964 千克二氧化碳当量”,
“停止”: “1站”
},
{
“公司名称”: “斯里兰卡”,
“航班持续时间”: “33 小时 55 分钟”,
“价钱”: “1,199 欧元”,
“出发日期”: “晚上 11 点 00 分”,
“到达日期”: “晚上 2:55+2”,
“二氧化碳排放量”: “968 千克二氧化碳当量”,
“停止”: “1站”
},
{
“公司名称”: “阿提哈德”,
“航班持续时间”: “13 小时 45 分钟”,
“价钱”: “2,038 欧元”,
“出发日期”: “晚上 10 点 25 分”,
“到达日期”: “晚上 6:10+1”,
“二氧化碳排放量”: “1,065 千克二氧化碳当量”,
“停止”: “马不停蹄”
},
{
“公司名称”: “卡塔尔航空公司”,
“航班持续时间”: “18 小时 20 分钟”,
“价钱”: “2,117 欧元”,
“出发日期”: “晚上 4 点 50 分”,
“到达日期”: “晚上 5:10+1”,
“二氧化碳排放量”: “1,292 千克二氧化碳当量”,
“停止”: “1站”
},
{
“公司名称”: “阿联酋航空”,
“航班持续时间”: “13 小时 50 分钟”,
“价钱”: “2,215 欧元”,
“出发日期”: “晚上 9 点 30 分”,
“到达日期”: “晚上 5:20+1”,
“二氧化碳排放量”: “1,070 千克二氧化碳当量”,
“停止”: “马不停蹄”
},
{
“公司名称”: “阿联酋航空”,
“航班持续时间”: “13 小时 50 分钟”,
“价钱”: “2,438 欧元”,
“出发日期”: “凌晨 2 点 15 分”,
“到达日期”: “晚上 10 点 05 分”,
“二氧化碳排放量”: “1,039 千克二氧化碳当量”,
“停止”: “马不停蹄”
},
{
“公司名称”: “阿联酋航空”,
“航班持续时间”: “13 小时 50 分钟”,
“价钱”: “2,438 欧元”,
“出发日期”: “凌晨 10 点 15 分”,
“到达日期”: “上午 6:05+1”,
“二氧化碳排放量”: “1,039 千克二氧化碳当量”,
“停止”: “马不停蹄”
},
{
“公司名称”: “阿联酋航空、印尼鹰航”,
“航班持续时间”: “16 小时”,
“价钱”: “3,203 欧元”,
“出发日期”: “凌晨 9 点 10 分”,
“到达日期”: “上午 7:10+1”,
“二氧化碳排放量”: “2,724 千克二氧化碳当量”,
“停止”: “1站”
}
]

使用 Crawlbase 进行可扩展的 Google 航班网页抓取

Crawlbase 提供了可靠的解决方案来处理 Google Flights 上的动态内容,并确保大规模数据顺利提取。通过利用 Crawlbase的 Crawling API,您可以克服诸如 IP 封锁、CAPTCHA 挑战以及 Google Flights 实施的反抓取措施等挑战。

Crawlbase 提供了一个与您的抓取工作流程无缝集成的 Python 库。您可以轻松地使用 Crawlbase API 调用替换传统的 HTTP 请求来获取网页。以下是如何使用 Crawlbase 进行可扩展的抓取:

拼装图:首先使用 pip 安装 Crawlbase Python 库:

1
点安装爬虫库

认证:获得一个 访问令牌 从 Crawlbase 之后 创建一个帐户。该令牌用于发出 API 请求时进行身份验证。

API用法:使用 Crawlbase 替换标准 HTTP 请求 Crawling API 调用。下面是使用 Crawlbase 获取网页的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 爬行基地 进口 抓取API

# 使用您的访问令牌初始化 Crawlbase API
爬行 API = 爬行 API({ '令牌': 'YOUR_CRAWLBASE_TOKEN' })

# 发出获取网页的请求
响应=crawling_api.get('https://www.google.com/flights')

# 检查请求是否成功
if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')
# 进一步处理html内容
其他:
打印(f"无法获取页面。Crawlbase 状态代码: {回复[“标题”]['pc_status']}")

处理动态内容: 爬行基地 Crawling API 还提供处理 JavaScript 渲染的功能,确保目标网页上的动态内容完全加载并可供抓取。

可扩展性: 爬行基地 Crawling API 提供住宅 IP 地址池,使您可以将抓取请求分发到多个 IP。这有助于防止 IP 被阻止,并确保即使规模很大,抓取操作也不会中断。

验证码解决: 爬行基地 Crawling API 自动处理 CAPTCHA 挑战,使您的抓取过程无需人工干预即可无缝继续。

通过将 Crawlbase 合并到您的抓取工作流程中,您可以 绕过验证码 从 Google Flights 中实现可扩展且高效的数据提取,同时克服与网络抓取相关的常见挑战。

总结

从 Google 航班抓取数据可以为旅行者和企业提供宝贵的见解。通过提取航班价格、飞行时间和二氧化碳排放量等关键信息,个人可以在预订航班时做出明智的决定。同时,企业可以利用这些数据进行竞争分析和市场研究。

虽然抓取 Google 航班数据的过程可能会因动态内容和反抓取措施而面临挑战,但利用 Crawlbase 等工具可以大大简化和精简抓取过程。凭借其可扩展的抓取 API 和动态内容处理能力,Crawlbase 可以高效地提取数据,而不会面临 IP 屏蔽或 CAPTCHA 挑战的风险。

如果您想扩展您的网络抓取功能,请考虑探索我们的 谷歌爬虫 以及我们以下有关抓取其他重要网站的指南。

📜 如何抓取谷歌财经
📜 如何抓取 Google 新闻
📜 如何抓取谷歌学术搜索结果
📜 如何抓取 Google 搜索结果
📜 如何抓取谷歌地图
📜 如何抓取雅虎财经
📜 如何刮 Zillow

如果您有任何问题或反馈,我们的 支持团队 随时为您的网络抓取之旅提供帮助。快乐刮擦!

常见问题

如果符合道德规范并遵守网站的服务条款,抓取 Google Flights 可能是合法的。审查并遵守网站的规定非常重要 robots.txt 文件,指定是否允许抓取以及任何限制或约束。此外,避免因过多请求而导致网站服务器超载也至关重要,因为这可能会违反其服务条款,并可能导致 IP 封锁或其他措施。

问:如何从 Google Flights 获取数据?

从 Google Flights 中提取数据涉及使用网络抓取技术从网站的 HTML 结构中检索信息。 BeautifulSoup 和 requests 等 Python 库通常用于此目的。通过向 Google Flights 网站发送 HTTP 请求并解析 HTML 响应,您可以提取航班价格、时刻表和可用性等数据。或者,您可以利用抓取工具或 Crawlbase 等 API 来简化流程并更有效地处理动态内容。

问:Google Flights 上的数据有多准确?

Google Flights 上提供的数据通常是可靠的,并且直接来自航空公司和旅行预订平台。然而,必须认识到,信息的准确性可能会因航空公司的实时更新、座位可用性和价格波动等因素而异。虽然 Google Flights 努力提供准确和最新的数据,但在做出任何旅行安排之前,最好直接与航空公司或预订网站核实详细信息。

问:抓取 Google Flights 有哪些限制?

抓取 Google Flights 会带来各种挑战,例如 IP 屏蔽、CAPTCHA 挑战和网站布局的变化。 Google Flights还实施了反抓取措施,使抓取变得更加困难。为了克服这些障碍,开发人员可以使用轮换代理、管理验证码挑战和调整抓取参数等技术。使用像 Crawlbase 这样可靠的抓取工具可以增强流程,确保抓取更顺畅、更具可扩展性。