Планируя поездки, большинство путешественников обращаются к Google, чтобы найти отели. Платформа показывает списки отелей, цены, отзывы и наличие мест — все в одном месте. Для предприятий, аналитиков или туристических платформ эти данные — золото. Скрапинг Google Hotels может помочь вам отслеживать тенденции ценообразования, следить за конкурентами и анализировать рыночные возможности в туристической отрасли.

В этом руководстве мы покажем вам, как выполнить парсинг Google Hotels с помощью Python и Crawlbase Crawling API. С помощью этого метода вы можете собирать данные об отелях в масштабе, не беспокоясь о блокировках, CAPTCHA или запретах IP. Мы рассмотрим все, от настройки вашей среды до написания полноценного скрапера для списков отелей и отдельных страниц отелей.

Давайте начнем.

Содержание

  1. Зачем копировать данные Google Hotels?
  2. Ключевые данные для извлечения из Google Hotels
  3. Crawlbase Crawling API для Google Hotels Скрапинг
  • Crawlbase Библиотека Python
  1. Настройка среды Python
  2. Извлечение результатов поиска Google Hotels
  • Проверка HTML на наличие селекторов
  • Написание скребка для листинга отелей
  • Обработка нумерации страниц
  • Сохранение данных в файле JSON
  • Полный пример кода
  1. Извлечение индивидуальных данных об отеле
  • Проверка HTML-кода на предмет сведений об отеле
  • Написание деталей Скребок
  • Сохранение данных в файле JSON
  • Полный пример кода
  1. Заключение
  2. FAQ

Зачем копировать данные Google Hotels?

Google Hotels — одна из самых используемых платформ для поиска и сравнения списков отелей. Она показывает цены, местоположения, отзывы и варианты бронирования — все в одном месте. Скрапинг Google Hotels позволяет собирать данные для мониторинга цен, анализа конкурентов и понимания рынка путешествий.

Вот несколько распространенных вариантов использования Google Hotels:

  • Отслеживать цены на отели: Посмотрите, как цены меняются со временем в зависимости от местоположения и сезона.
  • Сравнить конкурентов: Посмотрите рейтинг, цены и доступность других отелей.
  • Исследования путешествий: Создавайте инструменты, показывающие лучшие предложения отелей, схемы путешествий или популярность направлений.
  • Данные для машинного обучения: Используйте исторические данные для прогнозирования спроса на отели или ценовых тенденций.

Сбор этих данных вручную занимает много времени, но с помощью веб-скрапинга Python вы можете автоматизировать этот процесс и получить структурированные данные об отелях в кратчайшие сроки.

Ключевые данные для извлечения из Google Hotels

При скрапинге Google Hotels важно знать, какие точки данных имеют наибольшее значение. Эти данные полезны для мониторинга цен, конкурентного анализа и создания туристических инструментов.

На изображении ниже показаны некоторые наиболее ценные поля, которые вы можете извлечь:

Ключевые данные для извлечения из Google Hotels

Crawlbase Crawling API для Google Hotels Скрапинг

Скрапинг Google Hotels может быть сложным, поскольку сайт использует JavaScript для загрузки списков и подробностей отелей. Традиционные методы скрапинга часто не позволяют получить полный HTML-контент. Вот где Crawlbase Crawling API приходит дюйма

Crawlbase Crawling API упрощает сбор данных Google Hotels за счет обработки рендеринга JavaScript, ротации IP-адресов для избежания блокировок, быстрого и надежного извлечения данных и настраиваемых параметров запросов для имитации реальных пользователей.

Crawlbase Библиотека Python

Чтобы сделать это еще проще, Crawlbase обеспечивает Библиотека Python взаимодействовать с Crawling API, Все, что вам нужно, это Crawlbase токен доступа, который вы получаете после регистрации (мы предлагаем 1,000 бесплатных запросов без необходимости использования кредитной карты).

Вот простой пример:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
от база сканирования Импортировать CrawlingAPI

# Инициализация Crawlbase API с вашим токеном доступа
crawling_api = CrawlingAPI({ токен: 'ВАШ_ТОКЕН_БАЗЫ_КРАНА' })

защиту make_crawlbase_request(URL):
ответ = crawling_api.get(url)

if ответ["заголовки"]['статус_ПК'] == '200':
html_content = ответ['тело'].decode('utf-8')
возвращают html_контент
еще:
Распечатать(f"Не удалось загрузить страницу. Код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

С этой настройкой вы будете готовы начать извлекать списки и детали отелей из Google Hotels. В следующем разделе мы настроим среду Python для начала скрапинга.

Настройка среды Python

Перед тем, как скрейпить Google Hotels, вам нужно подготовить среду Python. Это включает установку самого Python и нескольких необходимых библиотек для отправки запросов и извлечения данных.

🐍 Установить Python

Если вы еще не установили Python, загрузите и установите последнюю версию с сайта официальный сайт Python. Во время установки обязательно поставьте галочку в поле «Добавить Python в PATH« — это позволит вам запустить Python из командной строки.

Чтобы проверить, установлен ли Python, выполните в терминале или командной строке следующее:

1
python --version

Вы должны увидеть номер установленной версии.

✅ Установите необходимые библиотеки

Для копирования Google Hotels мы будем использовать:

  • carwlbase – для отправки HTTP-запросов используйте Crawlbase Crawling API.
  • beautifulsoup4 – для анализа и извлечения контента из HTML.

Установите их с помощью pip:

1
2
запросы на установку pip
Пип установить BeautifulSoup4

📝 Создайте свой файл Python

Создайте новые файлы, в которых вы будете писать код для скрапинга, например:

1
2
трогать google_hotels_listing_scraper.py
трогать google_hotel_details_scraper.py

Или просто создайте их вручную в предпочитаемом вами редакторе кода.

🔑 Получите свой Crawlbase Токены

Если вы еще этого не сделали, зарегистрируйтесь по адресу Crawlbase и получите свой API токен. Этот токен вам понадобится для аутентификации ваших запросов на скрапинг.

1
2
3
4
от база сканирования Импортировать CrawlingAPI

# Замените CRAWLBSE_JS_TOKEN на ваш реальный токен.
crawling_api = CrawlingAPI({ токен: 'CRAWLBASE_JS_TOKEN' })

Примечание: Crawlbase предоставляет два типа токенов. Обычный токен для статических сайтов и токен JS для сайтов, отрисованных с помощью JS. Для скрапинга Google Hotels нам нужен токен JS. Смотрите документации больше.

Теперь ваша настройка завершена. Далее мы проверим HTML-структуру Google Hotels и начнем писать скрапер.

Извлечение результатов поиска Google Hotels

В этом разделе мы извлечем данные об отелях из Google Hotels с помощью Python, BeautifulSoup и Crawlbase Crawling API. Вы узнаете, как извлекать данные об отеле, обрабатывать пагинацию и сохранять данные в файле JSON.

🧩 Проверка HTML на наличие селекторов

Во-первых, открыть Google отели в браузере выполните поиск по местоположению (например, «Нью-Йорк») и просмотрите страницу.

Скриншот HTML-инспекции результатов поиска Google Hotels

Вот некоторые ключевые классы 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
от база сканирования Импортировать CrawlingAPI
от bs4 Импортировать КрасивыйСуп
Импортировать JSON

crawling_api = CrawlingAPI({ токен: 'CRAWLBASE_JS_TOKEN' })

защиту make_crawlbase_request(URL):
ответ = crawling_api.get(url)
if ответ["заголовки"]['статус_ПК'] == '200':
возвращают ответ['тело'].decode('utf-8')
возвращают Ничто

защиту parse_hotel_listings(HTML):
суп = КрасивыйСуп(html, "html.парсер")
hotel_data = []

отели = суп.найти_все("див", класс_="БкКагд")
для Гостиница in отели:
имя = hotel.find("h2", класс_="БгЫкоф")
цена = отель.найти("охватывать", класс_="qQOQpe prxS3d")
рейтинг = hotel.find("охватывать", класс_="KFi5wf lA0BZ")
ссылка = hotel.find(«А», класс_="ПВООКсе")

hotel_data.прикрепить({
"название": имя.текст if имя еще "N / A",
"цена": цена.текст if цена еще "N / A",
"рейтинг": рейтинг.текст if рейтинг еще "N / A",
"связь": "https://www.google.com" + ссылка[href] if ссылке. еще "N / A"
})

возвращают hotel_data

🔁 Обработка пагинации

Google Hotels загружает больше результатов на нескольких страницах. Использование 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
защиту make_crawlbase_request(URL-адрес, css_click_element=Ничто):
стараться:
параметры = {}

if css_click_element:
параметры['css_click_selector'] = css_click_element
параметры['ajax_wait'знак равно 'правда'

ответ = crawling_api.get(url, параметры)
if ответ["заголовки"].получать('статус_ПК') == '200':
возвращают ответ['тело'].decode('utf-8')

возвращают ответ

кроме Исключение as e:
Распечатать(f"Ошибка во время Crawlbase запрос: {е}")
возвращают {}

💾 Сохранение данных в файле JSON

Собрав все данные об отеле, сохраните их в файл JSON:

1
2
3
защиту сохранить_в_json(данные, имя файла="google_hotels.json"):
открытый(имя файла, "ш", кодировка="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
от база сканирования Импортировать CrawlingAPI
от bs4 Импортировать КрасивыйСуп
Импортировать JSON

crawling_api = CrawlingAPI({ токен: 'CRAWLBASE_JS_TOKEN' })

защиту make_crawlbase_request(URL-адрес, css_click_element=Ничто):
стараться:
параметры = {}

if css_click_element:
параметры['css_click_selector'] = css_click_element
параметры['ajax_wait'знак равно 'правда'

ответ = crawling_api.get(url, параметры)
if ответ["заголовки"].получать('статус_ПК') == '200':
возвращают ответ['тело'].decode('utf-8')

возвращают ответ

кроме Исключение as e:
Распечатать(f"Ошибка во время Crawlbase запрос: {е}")
возвращают {}

защиту parse_hotel_listings(HTML):
суп = КрасивыйСуп(html, "html.парсер")
hotel_data = []

отели = суп.найти_все("див", класс_="БкКагд")
для Гостиница in отели:
имя = hotel.find("h2", класс_="БгЫкоф")
цена = отель.найти("охватывать", класс_="qQOQpe prxS3d")
рейтинг = hotel.find("охватывать", класс_="KFi5wf lA0BZ")
ссылка = hotel.find(«А», класс_="ПВООКсе")

hotel_data.прикрепить({
"название": имя.текст if имя еще "N / A",
"цена": цена.текст if цена еще "N / A",
"рейтинг": рейтинг.текст if рейтинг еще "N / A",
"связь": "https://www.google.com" + ссылка[href] if ссылке. еще "N / A"
})

возвращают hotel_data

защиту сохранить_в_json(данные, имя файла="google_hotels.json"):
открытый(имя файла, "ш", кодировка="utf-8") as f:
json.dump(данные, f, ensure_ascii=Ложь, отступ=2)

защиту main():
URL = "https://www.google.com/travel/hotels/New-York?q=New+York¤cy=USD"
все_отели = []
макс_страницы = 2
количество_страниц = 0

в то время как количество_страниц < макс_страниц:
html = ''

if количество_страниц == 0:
# Для 1-й страницы
html = make_crawlbase_request(url)
еще:
# Для следующих страниц
html = make_crawlbase_request(url, 'кнопка[jsname="OCpkoe"]')

if HTML:
перерыв

отели = parse_hotel_listings(html)
all_hotels.extend(гостиницы)

количество_страниц += 1

сохранить_в_json(все_отели)
Распечатать(f"Поцарапанный {только(все_отели)} отели и сохранены в 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"
},
{
"название": «Отель King Brooklyn Sunset Park»,
"цена": "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 на предмет сведений об отеле

Откройте ссылку на отель в своем браузере и используйте инструмент проверки браузера, чтобы найти селекторы для важных полей:

Скриншот HTML-инспектирования Google Individual Hotel Details
  • Название отеля: Найдено в <h1> тег с классом FNkAEc.
  • Цена: Расположен в <span> тег с классами qQOQpe prxS3d.
  • Оценка: Извлечено из <span> с классами KFi5wf lA0BZ.
  • Количество отзывов: Найдено в <span> с классами jdzyld XLC8M, рядом с рейтингом.
  • Тип отеля: Найдено в <span> с классом CFH2De.
  • Адрес и контакты: Расположен внутри div с классом K4nuhf, где:
  • spans[0] дает адрес
  • spans[2] дает контактную информацию

Примечание: Эти селекторы могут меняться в зависимости от местоположения и макета. Всегда проверяйте их в своем браузере перед скрапингом.

🧰 Написание деталей Скребок

Используя выявленные селекторы CSS, давайте создадим скрапер Google Hotel Details с помощью 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
от база сканирования Импортировать CrawlingAPI
от bs4 Импортировать КрасивыйСуп
Импортировать JSON

crawling_api = CrawlingAPI({ токен: 'CRAWLBASE_JS_TOKEN' })

защиту make_crawlbase_request(URL):
ответ = crawling_api.get(url)
if ответ["заголовки"]['статус_ПК'] == '200':
возвращают ответ['тело'].decode('utf-8')
возвращают Ничто

защиту parse_hotel_details(hotel_url):
html = make_crawlbase_request(hotel_url)
if HTML:
возвращают Ничто

суп = КрасивыйСуп(html, "html.парсер")

имя = суп.найти("h1", класс_="ФНкАЭц")
цена = суп.найти("охватывать", класс_="qQOQpe prxS3d")
рейтинг = суп.найти("охватывать", класс_="KFi5wf lA0BZ")
отзывы = суп.найти("охватывать", класс_="jdzyld XLC8M")
тип_отеля = суп.найти("охватывать", класс_="CFH2De")

адрес = "N / A"
контакт = "N / A"

location_section = суп.find_all("див", класс_="К4нухф")
if раздел_расположения:
spans = location_section[0].find_all("охватывать")
if только(пролетает) >= 3:
адрес = охватывает[0].текст
контакт = пролеты[2].текст

возвращают {
"название": имя.текст if имя еще "N / A",
"цена": цена.текст if цена еще "N / A",
"рейтинг": рейтинг.текст if рейтинг еще "N / A",
"нет_отзывов": отзывы.текст if с отзывами еще "N / A",
"тип_отеля": тип_отеля.текст if тип_отеля еще "N / A",
"адрес": адрес,
"контакт": контакт,
"связь": hotel_url
}

💾 Сохранение данных об отеле в JSON

Вы можете собрать подробные данные об отеле в список и сохранить его так же, как и листинги.

1
2
3
защиту сохранить_подробные_данные(hotel_details, имя_файла="google_hotel_details.json"):
открытый(имя файла, "ш", кодировка="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
от база сканирования Импортировать CrawlingAPI
от bs4 Импортировать КрасивыйСуп
Импортировать JSON

crawling_api = CrawlingAPI({ токен: 'CRAWLBASE_JS_TOKEN' })

защиту make_crawlbase_request(URL):
ответ = crawling_api.get(url)
if ответ["заголовки"]['статус_ПК'] == '200':
возвращают ответ['тело'].decode('utf-8')
возвращают Ничто

защиту parse_hotel_details(hotel_url):
html = make_crawlbase_request(hotel_url)
if HTML:
возвращают Ничто

суп = КрасивыйСуп(html, "html.парсер")

имя = суп.найти("h1", класс_="ФНкАЭц")
цена = суп.найти("охватывать", класс_="qQOQpe prxS3d")
рейтинг = суп.найти("охватывать", класс_="KFi5wf lA0BZ")
отзывы = суп.найти("охватывать", класс_="jdzyld XLC8M")
тип_отеля = суп.найти("охватывать", класс_="CFH2De")

адрес = "N / A"
контакт = "N / A"

location_section = суп.find_all("див", класс_="К4нухф")
if раздел_расположения:
spans = location_section[0].find_all("охватывать")
if только(пролетает) >= 3:
адрес = охватывает[0].текст
контакт = пролеты[2].текст

возвращают {
"название": имя.текст if имя еще "N / A",
"цена": цена.текст if цена еще "N / A",
"рейтинг": рейтинг.текст if рейтинг еще "N / A",
"нет_отзывов": отзывы.текст if с отзывами еще "N / A",
"тип_отеля": тип_отеля.текст if тип_отеля еще "N / A",
"адрес": адрес,
"контакт": контакт,
"связь": hotel_url
}

защиту сохранить_подробные_данные(hotel_details, имя_файла="google_hotel_details.json"):
открытый(имя файла, "ш", кодировка="utf-8") as f:
json.dump(hotel_details, f, ensure_ascii=Ложь, отступ=2)

защиту main():
# Пример входного списка из скрапера листингов
hotel_links = [
"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"
]

подробные_отели = []

для URL in hotel_links:
данные = parse_hotel_details(url)
if данные:
подробный_отели.append(данные)

сохранить_подробные_данные(подробные_отели)
Распечатать(f"Сохраненные данные о {только(подробные_отели)} отели в 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)",
"тип_отеля": "2-звездочный отель",
"адрес": "38 W 31st St #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.2К)",
"тип_отеля": "3-звездочный отель",
"адрес": "137-72 Northern Blvd, Флашинг, Нью-Йорк 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 Hotels помогает собирать ценные данные, такие как названия отелей, цены, отзывы, рейтинги, адреса и контактная информация. Эти данные ценны для исследования путешествий, создания инструментов сравнения отелей или мониторинга рыночных тенденций.

Посмотрите на график Crawlbase Crawling API упрощает сбор динамического контента, избегая при этом блоков или CAPTCHA. В сочетании с BeautifulSoup для парсинга и JSON для сохранения данных вы можете создать простой, но мощный скрапер на Python.

При сборе данных об отелях всегда следуйте этическим и юридическим нормам, чтобы обеспечить безопасность и соответствие ваших проектов нормативным требованиям.

Хотите парсить больше платформ? Ознакомьтесь с нашими другими руководствами по парсингу:

📘 Как взломать Google Finance
📘 Как извлечь данные из Google News
📘 Как извлечь результаты из Google Scholar
📘 Как очистить результаты поиска Google
📘 Как скопировать данные Google Shopping

Если у вас есть вопросы, идеи или нужна помощь, наша команда здесь для вас. Спасибо за чтение и счастливого скрапинга!

FAQ

Сбор публичных данных с таких сайтов, как Google Hotels, может быть законным, если это делается этично и в соответствии с условиями обслуживания сайта. Всегда избегайте сбора персональных данных и убедитесь, что вы соблюдаете местные законы о конфиденциальности данных и правила сбора данных.

В. Зачем использовать Crawlbase Crawling API для копирования Google Hotels?

Контент Google Hotels загружается динамически с помощью JavaScript, который может быть трудно скопировать с помощью обычных инструментов. Crawlbase Crawling API загружает полный HTML-код, как настоящий браузер, и обрабатывает JavaScript, пагинацию, CAPTCHA и ротацию IP-адресов, делая парсинг более быстрым, простым и надежным.

В. Какие данные я могу извлечь из Google Hotels?

Вы можете извлечь название отеля, цену, адрес, рейтинг, количество отзывов, тип отеля и контактные данные. Эта информация полезна для аналитики отелей, мониторинга цен, маркетинговых исследований и приложений, связанных с путешествиями.