Agoda располагает миллионами списков отелей и объектов недвижимости. Независимо от того, проводите ли вы исследование, создаете агрегатор путешествий или анализируете цены на отели, сбор и анализ данных о ценах и информации о ценах имеют важное значение для исследования рынка и конкурентного анализа. Сбор данных из Agoda может быть действительно полезен для вашего проекта.

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

У вас будет веб-скрейпер Agoda, который может извлечение динамического контента и получить списки отелей. Помимо охвата промежуточных тем, таких как разбиение на страницы и использование API для упрощения скрапинга, это руководство разработано с учетом потребностей новичков.
Готовы начать? Вот краткое пошаговое руководство и подробное видео о том, как извлечь данные об отелях из Agoda:

Содержание

  1. Зачем собирать данные об отелях с Agoda?
  2. Ключевые данные для извлечения из Agoda
  3. Crawlbase Crawling API для сбора информации о гостиницах на Agoda
  • Установка Crawlbase Библиотека Python
  1. Настройка среды Python
  • Установка Python и необходимых библиотек
  • IDE для веб-скрапинга
  1. Очистка списков недвижимости Agoda
  • Проверка HTML для определения селекторов
  • Написание скрапера для поиска объявлений Agoda
  • Обработка прокрутки страниц
  • Хранение извлеченных данных в файле JSON
  • Полный пример кода Python
  1. Заключение
  2. Часто задаваемые вопросы (FAQ):

Зачем собирать данные об отелях с Agoda?

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

Вот несколько причин, по которым сбор данных об отелях Agoda представляет ценность:

1. Исследования рынка

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

2. Создание агрегатора путешествий

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

Агрегаторы также могут предоставлять данные по нескольким местоположениям, помогая пользователям сравнивать варианты в разных регионах и городах.

3. Анализ конкурентов

Отели могут использовать данные Agoda для отслеживания цены конкурентов, акции и обзоры, а также анализировать рейтинги отелей, данные обзоров и показатели заполняемости для сравнения показателей и улучшения цен и услуг.

4. Персональные рекомендации

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

5. Академические исследования

Исследователи могут использовать данные Agoda для изучения тенденций в сфере туризма, поведения пользователей и гостеприимства, используя общедоступные данные и обеспечивая всестороннее освещение академических проектов и отчетов.

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

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

Изображение ключевых точек данных для извлечения из Agoda
  1. Название отеля – Название отеля помогает идентифицировать объекты недвижимости.
  2. Цена за ночь – Стоимость проживания за одну ночь.
  3. цена – Полная стоимость за весь период проживания, включая налоги.
  4. Рейтинг отеля – Рейтинги клиентов для оценки качества недвижимости.
  5. Количество отзывов – Указывает на популярность и надежность отеля.
  6. Локация – Город или район, где расположен отель.
  7. Удобства – Такие удобства, как Wi-Fi, бассейн, тренажерный зал и т. д., которые предлагает отель.
  8. Тип объекта – Тип размещения, например, отель, курорт или апартаменты.
  9. Наличие номеров – Информация о свободных номерах на определенные даты.
  10. Изображения отеля – Визуальные изображения недвижимости полезны для демонстрации объявлений.

Crawlbase Crawling API для сбора информации о гостиницах на Agoda

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

Вот почему Crawlbase подходит для сбора данных Agoda:

  • Обрабатывает динамический контент: Crawlbase имитирует прокрутку страницы человеком, поэтому все списки отелей сохраняются по мере загрузки данных на страницу.
  • Ротация IP: Ротация IP-адресов для обхода ограничений скорости и блокировок от Agoda.
  • Быстро и надежно: Быстро извлекайте большие объемы данных.
  • Настраиваемые запросы: Настройте заголовки, файлы cookie и параметры запроса в соответствии со своими потребностями.

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

The Crawlbase Библиотека Python упрощает использование API. Для начала вам понадобится ваш Crawlbase токен доступа, который вы можете получить регистрацией за их обслуживание.

Вот пример кода для извлечения данных из Agoda с помощью Crawlbase:

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

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

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

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

Примечание: Токен JS от Crawlbase требуется для извлечения содержимого JavaScript. Crawlbase предлагает 1,000 бесплатных запросов для своего Crawling API. Смотреть документации для получения дополнительной информации. Далее мы настроим вашу среду Python для скрапинга Agoda!

В следующем разделе мы настроим вашу среду Python для сбора данных Agoda!

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

Установка библиотек и настройка вашей среды являются предварительными условиями для начала скрапинга Agoda. Выполните следующие шаги для завершения настройки.

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

Убедитесь, что на вашем компьютере установлен Python. Если нет, скачайте и установите последнюю версию с сайта официальный сайт Python.

После установки Python нам необходимо установить несколько необходимых библиотек:

  1. Crawlbase Библиотека Python: Для взаимодействия с Crawlbase Crawling API.
  2. КрасивыйСуп: Для анализа HTML и извлечения данных.

Вы можете установить эти библиотеки с помощью pip:

1
pip установить crawlbase beautifulsoup4

IDE для веб-скрапинга

Интегрированная среда разработки (IDE) облегчит написание кода и запуск вашего скрапера. Популярные варианты для Python:

  • Код VS: Легкий редактор с множеством расширений Python.
  • PyCharm: Полноценная IDE для Python.
  • Jupyter Notebook: Для интерактивного кодирования.

Выберите тот, который вам подходит, и все готово!

Очистка списков недвижимости Agoda

В этом разделе мы будем сканировать списки недвижимости Agoda для города «Куала-Лумпур». URL поиска:

URL-адрес поиска Agoda для Куала-Лумпура

Для эффективного извлечения данных из списков мы выполним следующие шаги:

Проверка HTML для определения селекторов

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

  1. Откройте URL-адрес Agoda: Перейдите на страницу результатов поиска Agoda для Куала-Лумпура.
  2. Осмотрите страницу: Щелкните правой кнопкой мыши на странице и выберите «Проверить» или нажмите Ctrl + Shift + I чтобы открыть Инструменты разработчика.
Изображение, проверяющее HTML-структуру недвижимости Agoda
  1. Определите ключевые элементы: В HTML-структуре страницы найдите элементы, содержащие информацию об отеле. Мы сосредоточимся на:
  • Название отеля: В пределах <h3> элемент с data-selenium="hotel-name".
  • Цена: В <div> элемент с data-element-name="final-price".
  • Рейтинг: В <p> элемент с data-element-name="review-score".
  • Ссылка на отель: В <a> тег с классом PropertyCard__Link которая ведет на страницу отеля.

Написание скрапера для поиска объявлений Agoda

Для извлечения данных из Agoda мы будем использовать Crawlbase Crawling API для обработки динамического контента и отображения страницы как в реальном браузере. Это гарантирует, что мы захватим все списки отелей, даже загруженные с помощью JavaScript. При извлечении данных об отелях важно собрать подробные данные о ценах для каждого списка, такие как цены на различные типы номеров и опции. Кроме того, вам следует определить общее количество отелей, найденных в результатах поиска, чтобы количественно оценить доступность.

Вот как мы можем написать скрапер:

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

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

# Функция для извлечения страницы результатов поиска Agoda
защиту fetch_agoda_page(URL):
ответ = crawling_api.get(url)
if ответ["заголовки"]['статус_ПК'] == '200':
возвращают ответ['тело'].decode('utf-8')
еще:
Распечатать(«Ошибка загрузки страницы».)
возвращают Ничто

# Функция для извлечения данных об отеле из HTML-контента
защиту извлечение_данных_agoda(html_контент):
суп = КрасивыйСуп(html_content, 'html.парсер')
отели = []

# Просмотрите все списки отелей на странице
для Гостиница in суп.выбрать('div#contentContainer ol.hotel-list-container > li.PropertyCard'):
имя = отель.выберите_один('h3[data-selenium="название-отеля"]').текст.полоска() if hotel.выберите_один('h3[data-selenium="название-отеля"]') еще ''
цена = отель.выберите_один('div[имя-элемента-данных="окончательная-цена"]').текст.полоска() if hotel.выберите_один('div[имя-элемента-данных="окончательная-цена"]') еще ''
рейтинг = hotel.select_one('p[имя-элемента-данных="оценка-обзора"]').текст.полоска() if hotel.выберите_один('p[имя-элемента-данных="оценка-обзора"]') еще ''
ссылка = hotel.select_one('a.PropertyCard__Link')['href'] if hotel.выберите_один('a.PropertyCard__Link') еще ''

отели.добавить({
'Name': имя,
'цена': цена,
'рейтинг': рейтинг,
'связь': f"https://www.agoda.com{связь}" # Завершите URL
})

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

Обработка прокрутки страниц

Agoda использует прокрутку страниц, поэтому больше списков отелей будут появляться по мере прокрутки страницы. Мы можем дать указания Crawlbase Crawling API для имитации прокрутки и захвата большего количества списков.

Для управления прокруткой мы можем использовать scroll и scroll_interval параметры. Вот как мы можем их задать:

1
2
3
4
5
6
варианты = {
«прокрутка»: 'правда',
'интервал_прокрутки': '20' # Прокрутите страницу на 20 секунд, чтобы загрузить больше объявлений
}

ответ = crawling_api.get(url, параметры)

Это сделает Crawler прокрутите страницу в течение 20 секунд, чтобы убедиться, что все списки отелей загружены перед считыванием.

Хранение извлеченных данных в файле JSON

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

1
2
3
4
защиту сохранить_в_json(данные, имя файла='hotels_data.json'):
открытый(имя файла, 'w') as f:
json.dump(данные, f, отступ=4)
Распечатать(f"Данные сохранены в {имя файла}")

Полный пример кода Python

Теперь, когда у нас есть все компоненты, давайте объединим все в полноценный рабочий пример. Этот скрипт извлечет результаты поиска Agoda для Куала-Лумпура, извлечет информацию об отеле и сохранит ее в файле JSON.

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

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

# Функция для извлечения страницы результатов поиска Agoda
защиту fetch_agoda_page(URL):
варианты = {
«прокрутка»: 'правда',
'интервал_прокрутки': '20'
}

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

# Функция для извлечения данных об отеле из HTML-контента
защиту извлечение_данных_agoda(html_контент):
суп = КрасивыйСуп(html_content, 'html.парсер')
отели = []

# Просмотрите все списки отелей на странице
для Гостиница in суп.выбрать('div#contentContainer ol.hotel-list-container > li.PropertyCard'):
имя = отель.выберите_один('h3[data-selenium="название-отеля"]').текст.полоска() if hotel.выберите_один('h3[data-selenium="название-отеля"]') еще ''
цена = отель.выберите_один('div[имя-элемента-данных="окончательная-цена"]').текст.полоска() if hotel.выберите_один('div[имя-элемента-данных="окончательная-цена"]') еще ''
рейтинг = hotel.select_one('p[имя-элемента-данных="оценка-обзора"]').текст.полоска() if hotel.выберите_один('p[имя-элемента-данных="оценка-обзора"]') еще ''
ссылка = hotel.select_one('a.PropertyCard__Link')['href'] if hotel.выберите_один('a.PropertyCard__Link') еще ''

отели.добавить({
'Name': имя,
'цена': цена,
'рейтинг': рейтинг,
'связь': f"https://www.agoda.com{связь}" # Завершите URL
})

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

# Функция сохранения данных в файл JSON
защиту сохранить_в_json(данные, имя файла='hotels_data.json'):
открытый(имя файла, 'w') as f:
json.dump(данные, f, отступ=4)
Распечатать(f"Данные сохранены в {имя файла}")

# Основной сценарий
if __имя__ == "__основной__":
URL = "https://www.agoda.com/search?city=14524&checkIn=2025-01-05&los=2&rooms=1&adults=2&checkOut=2025-01-09"
html_content = fetch_agoda_page(url)

if html_контент:
hotels_data = extract_agoda_data(html_content) # Извлечение данных из HTML-контента
сохранить_в_json(данные_отелей)

Пример вывода:

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
[
{
"название": «Diamond Suite KL в Mercu Summer Suite KLCC»,
"цена": "28 долларов США",
"рейтинг": "7.7",
"связь": "https://www.agoda.com/axon-suite-klcc-by-home/hotel/kuala-lumpur-my.html?countryId=198&finalPriceView=1&isShowMobileAppPrice=false&cid=-1&numberOfBedrooms=&familyMode=false&adults=2&children=0&rooms=1&maxRooms=0&checkIn=2025-01-7&isCalendarCallout=false&childAges=&numberOfGuest=0&missingChildAges=false&travellerType=1&showReviewSubmissionEntry=false&currencyCode=USD&isFreeOccSearch=false&tspTypes=17&los=4&searchrequestid=c975ab20-8534-4286-8e45-b8f3b25524f3"
},
{
"название": «Летние апартаменты KLCC By Castle Classy»,
"цена": "34 долларов США",
"рейтинг": "8.4",
"связь": "https://www.agoda.com/summer-suites-klcc-by-castle-classy/hotel/all/kuala-lumpur-my.html?countryId=198&finalPriceView=1&isShowMobileAppPrice=false&cid=-1&numberOfBedrooms=&familyMode=false&adults=2&children=0&rooms=1&maxRooms=0&checkIn=2025-01-7&isCalendarCallout=false&childAges=&numberOfGuest=0&missingChildAges=false&travellerType=1&showReviewSubmissionEntry=false&currencyCode=USD&isFreeOccSearch=false&tspTypes=3&los=4&searchrequestid=c975ab20-8534-4286-8e45-b8f3b25524f3"
},
{
"название": «Deface Platinum 2 Куала-Лумпур»,
"цена": "72 долларов США",
"рейтинг": "8.5",
"связь": "https://www.agoda.com/deface-victory-suites-kuala-lumpur/hotel/kuala-lumpur-my.html?countryId=198&finalPriceView=1&isShowMobileAppPrice=false&cid=-1&numberOfBedrooms=&familyMode=false&adults=2&children=0&rooms=1&maxRooms=0&checkIn=2025-01-7&isCalendarCallout=false&childAges=&numberOfGuest=0&missingChildAges=false&travellerType=1&showReviewSubmissionEntry=false&currencyCode=USD&isFreeOccSearch=false&tspTypes=8,-1&los=4&searchrequestid=c975ab20-8534-4286-8e45-b8f3b25524f3"
},
{
"название": «Riveria City Kuala Lumpur от Guestonic»,
"цена": "20 долларов США",
"рейтинг": "9.2",
"связь": "https://www.agoda.com/riveria-city-kuala-lumpur-by-guestonic/hotel/kuala-lumpur-my.html?countryId=198&finalPriceView=1&isShowMobileAppPrice=false&cid=-1&numberOfBedrooms=&familyMode=false&adults=2&children=0&rooms=1&maxRooms=0&checkIn=2025-01-7&isCalendarCallout=false&childAges=&numberOfGuest=0&missingChildAges=false&travellerType=1&showReviewSubmissionEntry=false&currencyCode=USD&isFreeOccSearch=false&tspTypes=5&los=4&searchrequestid=c975ab20-8534-4286-8e45-b8f3b25524f3"
},
.... более
]

Заключение

Сбор данных об отелях с помощью Python и Crawlbase позволяет компаниям получать информацию посредством конкурентного анализа, мониторинга цен и исследования рынка. Использование Crawlbase Crawling API, вы можете извлекать данные из динамических сайтов с большим объемом JavaScript, таких как Agoda, не сталкиваясь с распространенными проблемами, такими как задержки при разбиении на страницы или загрузке контента.

В этом блоге мы рассмотрели все, от поиска ключевых элементов HTML на странице результатов поиска Agoda до написания и запуска полноценного скрапера Python. Мы также показали, как обрабатывать пагинацию на основе прокрутки и сохранять скраперированные данные в файле JSON для дальнейшего анализа.

Если вам интересно узнать, как извлекать данные с других сайтов о недвижимости, ознакомьтесь с нашими полезными руководствами ниже.

📜 Как скрейпить Realtor.com
📜 Как скрейпить Zillow
📜 Как скрейпить Airbnb
📜 Как скопировать Booking.com
📜 Как скрейпить Expedia

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

FAQ

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

В. Как мне бороться с CAPTCHA или мерами по борьбе с ботами на Agoda?

Agoda использует CAPTCHA и другие методы обнаружения ботов. Вы можете обойти эти проблемы, используя Crawlbase Crawling API, который имеет такие функции, как рендеринг на основе браузера и ротация IP-адресов.

В. Могу ли я собирать данные по нескольким городам одновременно?

Да, вы можете извлечь данные для нескольких городов, изменив параметры запроса в URL-адресе Agoda. Например, обновите city параметр с желаемым идентификатором города. Просто убедитесь, что вы следуете лучшим практикам парсинга, например, ограничиваете частоту запросов, чтобы избежать блокировки.