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

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

如果您想直接抓取 Google Flights,请点击 相关信息.

目录

  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 scraper 为旅行者、企业和研究人员提供了宝贵的见解和竞争优势。通过从 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 Flights 中提取这些关键数据点,用户可以在预订航班时做出更明智的决策,优化旅行体验并最大限度地节省成本。此外,旅游行业的企业可以使用谷歌航班抓取工具来利用抓取的数据进行市场分析、定价策略和竞争情报。

如何用 Python 抓取 Google 航班

让我们快速进入第一步,当然是设置环境来构建自定义的谷歌航班抓取工具

安装先决条件

设置抓取 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 Flights 的可扩展网络

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

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

装置:首先使用 pip 安装 Crawlbase Python 库:

1
点安装爬虫库

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

API用法:用 Crawlbase Crawling API 调用替换标准 HTTP 请求。以下是使用 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']}")

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

可扩展性:Crawlbase 抓取 API 提供住宅 IP 地址池,使您能够跨多个 IP 分发抓取请求。这有助于防止 IP 阻塞,并确保即使是大规模的抓取操作也不会中断。

验证码解决:Crawlbase Crawling API 自动处理验证码挑战,使您的抓取过程能够无缝继续,无需手动干预。

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

最后的思考

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

虽然由于动态内容和反抓取措施,抓取 Google Flights 的过程可能会带来挑战,但利用 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 这样可靠的抓取工具可以增强流程,确保抓取更顺畅、更具可扩展性。