在计划行程时,大多数旅行者都会使用 Google 来查找酒店。该平台将酒店列表、价格、评论和空房情况一目了然。对于企业、分析师或旅游平台来说,这些数据是宝贵的资源。抓取 Google 酒店数据可以帮助您追踪价格趋势、监控竞争对手并分析旅游行业的市场机会。

在本指南中,我们将向您展示如何使用 Python 和 Crawlbase Crawling API使用此方法,您可以大规模收集酒店数据,而无需担心屏蔽、验证码或 IP 封禁。我们将涵盖从设置环境到编写完整的酒店列表和单个酒店页面抓取工具的所有内容。

开始吧。

目录

  1. 为什么要抓取 Google 酒店信息?
  2. 从 Google 酒店提取的关键数据
  3. Crawlbase Crawling API 用于 Google 酒店抓取
  • Crawlbase Python库
  1. 设置 Python 环境
  2. 抓取谷歌酒店搜索结果
  • 检查 HTML 中的选择器
  • 编写酒店列表抓取工具
  • 处理分页
  • 将数据保存在 JSON 文件中
  • 完整代码示例
  1. 提取单个酒店的详细信息
  • 检查酒店详情的 HTML
  • 编写详细信息抓取工具
  • 将数据保存在 JSON 文件中
  • 完整代码示例
  1. 总结
  2. 常见问题 (FAQ)

为什么要抓取 Google 酒店信息?

Google 酒店是查找和比较酒店列表最常用的平台之一。它在一个平台上显示价格、位置、评论和预订选项。通过抓取 Google 酒店数据,您可以收集数据用于价格监控、竞争对手分析和旅游市场洞察。

以下是抓取 Google 酒店数据的一些常见用例:

  • 追踪酒店价格:查看不同地点和季节的价格随时间的变化情况。
  • 比较竞争对手:查看其他酒店的评级、价格和空房情况。
  • 旅游研究:构建显示最佳酒店优惠、旅行模式或目的地受欢迎程度的工具。
  • 机器学习数据:使用历史数据预测酒店需求或价格趋势。

手动抓取这些数据非常耗时,但使用 Python 网络抓取,您可以自动化该过程并立即获取结构化的酒店数据。

从 Google 酒店提取的关键数据

在抓取 Google 酒店数据时,了解哪些数据点最重要至关重要。这些详细信息对于价格监控、竞争分析和构建旅行工具都非常有用。

下图显示了一些您可以提取的最有价值的字段:

从 Google Hotels 提取的关键数据

Crawlbase Crawling API 用于 Google 酒店抓取

抓取 Google 酒店数据可能比较棘手,因为该网站使用 JavaScript 加载酒店列表和详情。传统的抓取方法通常无法获取完整的 HTML 内容。因此 Crawlbase Crawling API 用武之地。

Crawlbase Crawling API 通过处理 JavaScript 渲染、旋转 IP 以避免阻塞、快速可靠的数据提取以及自定义请求选项来模拟真实用户,使 Google Hotels 抓取变得简单。

Crawlbase Python库

为了更加方便, Crawlbase 提供了一个 Python 库 与对方互动 Crawling API。 您只需要一个 Crawlbase 访问令牌,您在注册后即可获得(我们提供 1,000 次免费请求,无需信用卡)。

这是一个基本示例:

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

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

DEF make_crawlbase_request(网址):
响应=crawling_api.get(url)

if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')
回报 html_内容
其他:
打印(f"无法获取页面。状态代码: {回复[“标题”]['pc_status']}")
回报 没有

完成此设置后,您就可以开始从 Google Hotels 提取酒店列表和详细信息了。在下一节中,我们将设置 Python 环境以开始抓取数据。

设置 Python 环境

在抓取 Google 酒店数据之前,你需要准备 Python 环境。这包括安装 Python 本身以及一些用于发送请求和提取数据的基本库。

🐍 安装 Python

如果你尚未安装 Python,请从 Python官方网站。安装过程中,请务必选中“将Python添加到PATH“——这将允许您从命令行运行 Python。

要检查 Python 是否已安装,请在终端或命令提示符中运行以下命令:

1
python --version

您应该会看到已安装的版本号。

✅ 安装所需的库

为了抓取 Google 酒店数据,我们将使用:

  • carwlbase – 发送 HTTP 请求使用 Crawlbase Crawling API.
  • beautifulsoup4 – 解析并提取 HTML 内容。

使用 pip 安装它们:

1
2
点安装请求
点安装beautifulsoup4

📝 创建你的 Python 文件

创建新文件来编写抓取代码,例如:

1
2
触摸 google_hotels_listing_scraper.py
触摸 google_hotel_details_scraper.py

或者只是在您喜欢的代码编辑器中手动创建它们。

🔑 获取您的 Crawlbase Token

如果你还没有注册,请注册 Crawlbase 并获取您的 API 令牌。您需要此令牌来验证您的抓取请求。

1
2
3
4
 爬行基地 进口 抓取API

# 用您的实际令牌替换 CRAWLBSE_JS_TOKEN。
爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

请注意: Crawlbase 提供两种类型的令牌。一种是用于静态网站的普通令牌,另一种是用于 JS 渲染网站的 JS 令牌。对于 Google 酒店数据抓取,我们需要 JS 令牌。请参阅 文件 了解更多信息。

现在,您的设置已完成。接下来,我们将检查 Google 酒店的 HTML 结构并开始编写数据抓取工具。

抓取谷歌酒店搜索结果

在本节中,我们将使用 Python、BeautifulSoup 和 Crawlbase Crawling API。您将学习如何提取酒店详细信息、处理分页以及将数据保存到 JSON 文件中。

🧩 检查 HTML 中的选择器

首先,打开 Google饭店 在浏览器中,搜索一个位置(例如“纽约”),然后检查页面。

抓取 Google 酒店搜索结果 HTML 检查的屏幕截图

以下是酒店列表中使用的一些关键 CSS 类:

  • 酒店卡:div.BcKagd
  • 酒店名称: h2.BgYkof
  • 价格: span.qQOQpe.prxS3d
  • 评分: span.KFi5wf.lA0BZ

我们将在我们的抓取工具中使用这些选择器。

🧪 编写酒店列表抓取工具

现在,让我们编写一个函数来提取酒店数据 Crawlbase 和BeautifulSoup。

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
 爬行基地 进口 抓取API
bs4 进口 美丽汤
进口 JSON

爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

DEF make_crawlbase_request(网址):
响应=crawling_api.get(url)
if 回复[“标题”]['pc_status'] == '200':
回报 回复['身体']。解码('utf-8')
回报 没有

DEF 解析酒店列表(HTML):
汤 = BeautifulSoup(html, “html.解析器”)
酒店数据 = []

酒店=汤.find_all(“div”, 类_=“BcKagd”)
HPMC胶囊 饭店 in 酒店:
名称 = 酒店.查找(“h2”, 类_=“BgYkof”)
价格 = 酒店.查找(“跨度”, 类_=“qQOQpe prxS3d”)
评级 = 酒店.查找(“跨度”, 类_=“KFi5wf lA0BZ”)
链接 = 酒店.查找(“一种”, 类_=“PVOOXe”)

hotel_data.append({
“名称”:名称.文本 if 姓名 其他 “不适用”,
“价钱”:价格.文本 if 车资 其他 “不适用”,
“评分”:评级.文本 if 等级 其他 “不适用”,
“关联”: “https://www.google.com” + 链接[“参考”] if 链接 其他 “不适用”
})

回报 hotel_data

🔁 处理分页

Google 酒店会在多个页面上加载更多结果。使用 Crawlbase Crawling API,我们可以用 css_click_selector 参数。我们还可以使用 ajax_wait 参数,以确保点击后内容完全加载。这确保 Crawling API 单击按钮并呈现内容后,返回下一页的完整 HTML。

让我们更新我们的 make_crawlbase_request 函数包含这些参数并添加异常处理以获得更好的可靠性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DEF make_crawlbase_request(url,css_click_element=没有):
尝试:
选项 = {}

if css_click_元素:
选项[‘css_click_selector’] = css_click_element
选项['ajax_等待'] = '真的'

响应=crawling_api.get(url,选项)
if 回复[“标题”]。得到('pc_status')== '200':
回报 回复['身体']。解码('utf-8')

回报 响应

特殊课程 as e:
打印(f“期间错误 Crawlbase 请求: {e}")
回报 {}

💾 将数据保存到 JSON 文件中

收集完所有酒店数据后,将其保存到 JSON 文件中:

1
2
3
DEF 保存到json(数据,文件名=“google_hotels.json”):
- open(文件名, “w”, 编码=“utf-8”) as f:
json.dump(数据,f,ensure_ascii=, 缩进=2)

✅ 完整代码示例

以下是结合上述所有步骤的完整代码:

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
 爬行基地 进口 抓取API
bs4 进口 美丽汤
进口 JSON

爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

DEF make_crawlbase_request(url,css_click_element=没有):
尝试:
选项 = {}

if css_click_元素:
选项[‘css_click_selector’] = css_click_element
选项['ajax_等待'] = '真的'

响应=crawling_api.get(url,选项)
if 回复[“标题”]。得到('pc_status')== '200':
回报 回复['身体']。解码('utf-8')

回报 响应

特殊课程 as e:
打印(f“期间错误 Crawlbase 请求: {e}")
回报 {}

DEF 解析酒店列表(HTML):
汤 = BeautifulSoup(html, “html.解析器”)
酒店数据 = []

酒店=汤.find_all(“div”, 类_=“BcKagd”)
HPMC胶囊 饭店 in 酒店:
名称 = 酒店.查找(“h2”, 类_=“BgYkof”)
价格 = 酒店.查找(“跨度”, 类_=“qQOQpe prxS3d”)
评级 = 酒店.查找(“跨度”, 类_=“KFi5wf lA0BZ”)
链接 = 酒店.查找(“一种”, 类_=“PVOOXe”)

hotel_data.append({
“名称”:名称.文本 if 姓名 其他 “不适用”,
“价钱”:价格.文本 if 车资 其他 “不适用”,
“评分”:评级.文本 if 等级 其他 “不适用”,
“关联”: “https://www.google.com” + 链接[“参考”] if 链接 其他 “不适用”
})

回报 hotel_data

DEF 保存到json(数据,文件名=“google_hotels.json”):
- open(文件名, “w”, 编码=“utf-8”) as f:
json.dump(数据,f,ensure_ascii=, 缩进=2)

DEF ():
网址= “https://www.google.com/travel/hotels/New-York?q=New+York¤cy=USD”
所有酒店 = []
最大页数 = 2
页数 = 0

页数 < 最大页数:
html = ''

if 页数== 0:
# 第一页
html = make_crawlbase_request(网址)
其他:
# 下一页
html = make_crawlbase_request(url, '按钮[jsname="OCpkoe"]')

if 而不去 的HTML:
打破

酒店 = 解析酒店列表(html)
all_hotels.extend(酒店)

页数 += 1

保存到json(所有酒店)
打印(f"刮掉 {LEN(所有酒店) 酒店并保存到 google_hotels.json”)

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
[
{
“名称”: “31街百老汇酒店”,
“价钱”: “ $ 59”,
“评分”: “2.5”,
“关联”: "https://www.google.com/travel/search?q=New%20York&qs=MihDaG9JeFBLSXpvWDR6SWZMQVJvTkwyY3ZNVEZ3ZDJnMU4yYzFOUkFCOAA&currency=USD&ved=2ahUKEwiY1rucg9CMAxUIAPkAHXyaE5EQyvcEegQIAxA-&ap=KigKEgm4tF8JXhxEQBF5jsg3iI5SwBISCfZ7hYTLm0RAEXmOyLfKcVLA&ts=CAESCgoCCAMKAggDEAAaXAo-EjwKCS9tLzAyXzI4NjIlMHg4OWMyNGZhNWQzM2YwODNiOjB4YzgwYjhmMDZlMTc3ZmU2MjoITmV3IFlvcmsSGhIUCgcI6Q8QBBgQEgcI6Q8QBBgRGAEyAhAAKgcKBToDVVNE"
},
{
“名称”: “一家精品酒店”,
“价钱”: “ $ 90”,
“评分”: “3.3”,
“关联”: "https://www.google.com/travel/search?q=New%20York&qs=MidDaGtJZ0t6dDBjdkZ6dG1jQVJvTUwyY3ZNWEUxWW14eWF6a3pFQUU4AA&currency=USD&ved=2ahUKEwiY1rucg9CMAxUIAPkAHXyaE5EQyvcEegQIAxBV&ap=KigKEgm4tF8JXhxEQBF5jsg3iI5SwBISCfZ7hYTLm0RAEXmOyLfKcVLA&ts=CAESCgoCCAMKAggDEAAaXAo-EjwKCS9tLzAyXzI4NjIlMHg4OWMyNGZhNWQzM2YwODNiOjB4YzgwYjhmMDZlMTc3ZmU2MjoITmV3IFlvcmsSGhIUCgcI6Q8QBBgQEgcI6Q8QBBgRGAEyAhAAKgcKBToDVVNE"
},
{
“名称”: “纽约莱酒店”,
“价钱”: “ $ 153”,
“评分”: “4.4”,
“关联”: "https://www.google.com/travel/search?q=New%20York&qs=MihDaG9JbU9UeXpldUN6cnlrQVJvTkwyY3ZNVEYyY0d3MGJuSXpZaEFCOAA&currency=USD&ved=2ahUKEwiY1rucg9CMAxUIAPkAHXyaE5EQyvcEegQIAxBu&ap=KigKEgm4tF8JXhxEQBF5jsg3iI5SwBISCfZ7hYTLm0RAEXmOyLfKcVLA&ts=CAESCgoCCAMKAggDEAAaXAo-EjwKCS9tLzAyXzI4NjIlMHg4OWMyNGZhNWQzM2YwODNiOjB4YzgwYjhmMDZlMTc3ZmU2MjoITmV3IFlvcmsSGhIUCgcI6Q8QBBgQEgcI6Q8QBBgRGAEyAhAAKgcKBToDVVNE"
},
{
“名称”: “布鲁克林日落公园国王酒店”,
“价钱”: “ $ 75”,
“评分”: “3.4”,
“关联”: "https://www.google.com/travel/search?q=New%20York&qs=MihDaG9JbllMLW1iTG5uLTNDQVJvTkwyY3ZNVEZ5ZDNKNWQyUXdiQkFCOAA&currency=USD&ved=2ahUKEwiY1rucg9CMAxUIAPkAHXyaE5EQyvcEegUIAxCJAQ&ap=KigKEgm4tF8JXhxEQBF5jsg3iI5SwBISCfZ7hYTLm0RAEXmOyLfKcVLA&ts=CAESCgoCCAMKAggDEAAaXAo-EjwKCS9tLzAyXzI4NjIlMHg4OWMyNGZhNWQzM2YwODNiOjB4YzgwYjhmMDZlMTc3ZmU2MjoITmV3IFlvcmsSGhIUCgcI6Q8QBBgQEgcI6Q8QBBgRGAEyAhAAKgcKBToDVVNE"
},
{
“名称”: “安缦纽约”,
“价钱”: “ $ 2,200”,
“评分”: “4.4”,
“关联”: "https://www.google.com/travel/search?q=New%20York&qs=MidDaGtJc3Q3dF80YmhzWW9ZR2cwdlp5OHhNV1kyTW1Sd2VIbHNFQUU4AA&currency=USD&ved=2ahUKEwiY1rucg9CMAxUIAPkAHXyaE5EQyvcEegUIAxCiAQ&ap=KigKEgm4tF8JXhxEQBF5jsg3iI5SwBISCfZ7hYTLm0RAEXmOyLfKcVLA&ts=CAESCgoCCAMKAggDEAAaXAo-EjwKCS9tLzAyXzI4NjIlMHg4OWMyNGZhNWQzM2YwODNiOjB4YzgwYjhmMDZlMTc3ZmU2MjoITmV3IFlvcmsSGhIUCgcI6Q8QBBgQEgcI6Q8QBBgRGAEyAhAAKgcKBToDVVNE"
},
.... 更多的
]

现在我们已经从搜索结果中抓取了酒店列表,下一步是从各个酒店页面中提取详细信息。

提取单个酒店的详细信息

一旦我们从搜索结果中获得了酒店链接列表,我们就可以访问每家酒店的页面以提取更多信息,例如完整地址、电话号码和其他酒店特色。这让我们对酒店有了更深入的了解,并且对于竞争对手分析、价格跟踪或开发旅行应用程序非常有用。

🔍 检查 HTML 中的酒店详情

在浏览器中打开酒店链接,然后使用浏览器的检查工具查找重要字段的选择器:

抓取 Google 个人酒店详情 HTML 检查的屏幕截图
  • 酒店名称:Found in an <h1> 用类标记 FNkAEc.
  • 价格:位于 <span> 带有类别的标签 qQOQpe prxS3d.
  • 评分:摘自 <span> 有课 KFi5wf lA0BZ.
  • 评论数量:在 <span> 有课 jdzyld XLC8M,位于评分旁边。
  • 酒店类型:位于 <span> 有课 CFH2De.
  • 地址和联系方式:位于 div 有课 K4nuhf,其中:
  • spans[0] 给出地址
  • spans[2] 提供联系信息

请注意: 这些选择器可能会根据位置和布局而变化。抓取数据前,请务必在自己的浏览器中验证它们。

🧰 编写详细信息抓取工具

使用已识别的 CSS 选择器,让我们使用 BeautifulSoup 创建 Google 酒店详情抓取工具。

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
 爬行基地 进口 抓取API
bs4 进口 美丽汤
进口 JSON

爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

DEF make_crawlbase_request(网址):
响应=crawling_api.get(url)
if 回复[“标题”]['pc_status'] == '200':
回报 回复['身体']。解码('utf-8')
回报 没有

DEF 解析酒店详情(hotel_url):
html = make_crawlbase_request(酒店网址)
if 而不去 的HTML:
回报 没有

汤 = BeautifulSoup(html, “html.解析器”)

名称 = 汤.find(“h1”, 类_=“FNkAEc”)
价格 = 汤.查找(“跨度”, 类_=“qQOQpe prxS3d”)
评级=汤.查找(“跨度”, 类_=“KFi5wf lA0BZ”)
评论=汤.查找(“跨度”, 类_=“jdzyld XLC8M”)
酒店类型=汤.查找(“跨度”, 类_=“CFH2De”)

地址= “不适用”
联系方式 = “不适用”

location_section = soup.find_all(“div”, 类_=“K4nuhf”)
if 位置部分:
跨度 = 位置部分[0].find_all(“跨度”)
if LEN(跨度)>= 3:
地址 = 跨度[0]。文本
联系方式 = 跨度[2]。文本

回报 {
“名称”:名称.文本 if 姓名 其他 “不适用”,
“价钱”:价格.文本 if 车资 其他 “不适用”,
“评分”:评级.文本 if 等级 其他 “不适用”,
评论数:评论.文本 if 评论 其他 “不适用”,
“酒店类型”:酒店类型.文本 if 酒店类型 其他 “不适用”,
“地址”: 地址,
“接触”: 接触,
“关联”:酒店网址
}

💾 将酒店详细信息保存为 JSON

您可以将酒店详细数据收集到列表中,并像列表一样保存。

1
2
3
DEF 保存详细数据(hotel_details,文件名=“google_hotel_details.json”):
- open(文件名, “w”, 编码=“utf-8”) as f:
json.dump(hotel_details,f,ensure_ascii=, 缩进=2)

🧩 完整代码示例

您可以按照以下方式循环浏览酒店链接列表并提取每个链接的完整详细信息:

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
 爬行基地 进口 抓取API
bs4 进口 美丽汤
进口 JSON

爬行 API = 爬行 API({ '令牌': 'CRAWLBASE_JS_TOKEN' })

DEF make_crawlbase_request(网址):
响应=crawling_api.get(url)
if 回复[“标题”]['pc_status'] == '200':
回报 回复['身体']。解码('utf-8')
回报 没有

DEF 解析酒店详情(hotel_url):
html = make_crawlbase_request(酒店网址)
if 而不去 的HTML:
回报 没有

汤 = BeautifulSoup(html, “html.解析器”)

名称 = 汤.find(“h1”, 类_=“FNkAEc”)
价格 = 汤.查找(“跨度”, 类_=“qQOQpe prxS3d”)
评级=汤.查找(“跨度”, 类_=“KFi5wf lA0BZ”)
评论=汤.查找(“跨度”, 类_=“jdzyld XLC8M”)
酒店类型=汤.查找(“跨度”, 类_=“CFH2De”)

地址= “不适用”
联系方式 = “不适用”

location_section = soup.find_all(“div”, 类_=“K4nuhf”)
if 位置部分:
跨度 = 位置部分[0].find_all(“跨度”)
if LEN(跨度)>= 3:
地址 = 跨度[0]。文本
联系方式 = 跨度[2]。文本

回报 {
“名称”:名称.文本 if 姓名 其他 “不适用”,
“价钱”:价格.文本 if 车资 其他 “不适用”,
“评分”:评级.文本 if 等级 其他 “不适用”,
评论数:评论.文本 if 评论 其他 “不适用”,
“酒店类型”:酒店类型.文本 if 酒店类型 其他 “不适用”,
“地址”: 地址,
“接触”: 接触,
“关联”:酒店网址
}

DEF 保存详细数据(hotel_details,文件名=“google_hotel_details.json”):
- open(文件名, “w”, 编码=“utf-8”) as f:
json.dump(hotel_details,f,ensure_ascii=, 缩进=2)

DEF ():
# 来自列表抓取工具的示例输入列表
酒店链接 = [
"https://www.google.com/travel/search?q=New%20York&qs=MihDaG9JeFBLSXpvWDR6SWZMQVJvTkwyY3ZNVEZ3ZDJnMU4yYzFOUkFCOAA&currency=USD&ved=2ahUKEwiY1rucg9CMAxUIAPkAHXyaE5EQyvcEegQIAxA-&ap=KigKEgm4tF8JXhxEQBF5jsg3iI5SwBISCfZ7hYTLm0RAEXmOyLfKcVLA&ts=CAESCgoCCAMKAggDEAAaXAo-EjwKCS9tLzAyXzI4NjIlMHg4OWMyNGZhNWQzM2YwODNiOjB4YzgwYjhmMDZlMTc3ZmU2MjoITmV3IFlvcmsSGhIUCgcI6Q8QBBgQEgcI6Q8QBBgRGAEyAhAAKgcKBToDVVNE",
"https://www.google.com/travel/search?q=New%20York&qs=MidDaGtJZ0t6dDBjdkZ6dG1jQVJvTUwyY3ZNWEUxWW14eWF6a3pFQUU4AA&currency=USD&ved=2ahUKEwiY1rucg9CMAxUIAPkAHXyaE5EQyvcEegQIAxBV&ap=KigKEgm4tF8JXhxEQBF5jsg3iI5SwBISCfZ7hYTLm0RAEXmOyLfKcVLA&ts=CAESCgoCCAMKAggDEAAaXAo-EjwKCS9tLzAyXzI4NjIlMHg4OWMyNGZhNWQzM2YwODNiOjB4YzgwYjhmMDZlMTc3ZmU2MjoITmV3IFlvcmsSGhIUCgcI6Q8QBBgQEgcI6Q8QBBgRGAEyAhAAKgcKBToDVVNE"
]

详细酒店 = []

HPMC胶囊 网址 in 酒店链接:
数据 = parse_hotel_details(url)
if 数据:
详细的酒店.附加(数据)

保存详细数据(详细酒店)
打印(f“保存的详细信息 {LEN(详细酒店)} 酒店到 google_hotel_details.json”)

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

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[
{
“名称”: “31街百老汇酒店”,
“价钱”: “ $ 59”,
“评分”: “3.8”,
评论数: “(461)”,
“酒店类型”: “二星级酒店”,
“地址”: “纽约州纽约市西 38 街 31 号 110 室,邮编 10001”,
“接触”: “(516)770-8751”,
“关联”: "https://www.google.com/travel/search?q=New%20York&qs=MihDaG9JeFBLSXpvWDR6SWZMQVJvTkwyY3ZNVEZ3ZDJnMU4yYzFOUkFCOAA&currency=USD&ved=2ahUKEwiY1rucg9CMAxUIAPkAHXyaE5EQyvcEegQIAxA-&ap=KigKEgm4tF8JXhxEQBF5jsg3iI5SwBISCfZ7hYTLm0RAEXmOyLfKcVLA&ts=CAESCgoCCAMKAggDEAAaXAo-EjwKCS9tLzAyXzI4NjIlMHg4OWMyNGZhNWQzM2YwODNiOjB4YzgwYjhmMDZlMTc3ZmU2MjoITmV3IFlvcmsSGhIUCgcI6Q8QBBgQEgcI6Q8QBBgRGAEyAhAAKgcKBToDVVNE"
},
{
“名称”: “一家精品酒店”,
“价钱”: “ $ 90”,
“评分”: “4.5”,
评论数: “(1.2K)”,
“酒店类型”: “二星级酒店”,
“地址”: “纽约州法拉盛北大道 137-72 号,邮编 11354”,
“接触”: “(718)886-3555”,
“关联”: "https://www.google.com/travel/search?q=New%20York&qs=MidDaGtJZ0t6dDBjdkZ6dG1jQVJvTUwyY3ZNWEUxWW14eWF6a3pFQUU4AA&currency=USD&ved=2ahUKEwiY1rucg9CMAxUIAPkAHXyaE5EQyvcEegQIAxBV&ap=KigKEgm4tF8JXhxEQBF5jsg3iI5SwBISCfZ7hYTLm0RAEXmOyLfKcVLA&ts=CAESCgoCCAMKAggDEAAaXAo-EjwKCS9tLzAyXzI4NjIlMHg4OWMyNGZhNWQzM2YwODNiOjB4YzgwYjhmMDZlMTc3ZmU2MjoITmV3IFlvcmsSGhIUCgcI6Q8QBBgQEgcI6Q8QBBgRGAEyAhAAKgcKBToDVVNE"
}
]

总结

抓取 Google 酒店数据可以帮助您收集有价值的数据,例如酒店名称、价格、评论、评分、地址和联系信息。这些数据对于旅行研究、构建酒店比较工具或监测市场趋势都非常有用。

使用 Crawlbase Crawling API 使动态内容抓取更加便捷,同时避免拦截或验证码。结合 BeautifulSoup 的解析和 JSON 数据保存功能,您可以用 Python 构建一个简单却强大的抓取工具。

在抓取酒店数据时,请始终遵循道德和法律的最佳实践,以确保您的项目安全且合规。

想要抓取更多平台的数据?查看我们的其他抓取指南:

📘 如何抓取谷歌财经
📘 如何抓取 Google 新闻
📘 如何抓取谷歌学术搜索结果
📘 如何抓取 Google 搜索结果
📘 如何抓取 Google 购物数据

如果您有任何疑问、想法或需要帮助,我们的团队将竭诚为您服务。感谢您的阅读,祝您抓取愉快!

常见问题 (FAQ)

从 Google Hotels 等网站抓取公共数据,只要符合道德规范且符合网站服务条款,则可能合法。请务必避免抓取个人数据,并确保遵守当地的数据隐私法和抓取法规。

问:为什么要使用 Crawlbase Crawling API 抓取 Google 酒店数据?

Google Hotels 的内容是使用 JavaScript 动态加载的,使用常规工具很难抓取。 Crawlbase Crawling API 像真正的浏览器一样加载完整的 HTML,并处理 JavaScript、分页、CAPTCHA 和 IP 轮换——使您的抓取更快、更轻松、更可靠。

问:我可以从 Google 酒店提取哪些数据?

您可以提取酒店名称、价格、地址、评分、评论数量、酒店类型和联系方式。这些信息对于酒店分析、价格监控、市场调研和旅游相关应用非常有用。