Услуги
  • Сайти
  • Контент
  • Просування
  • Бітрікс24
  • Додатки
Все услуги Оплата
Бітрікс24
Все услуги Оплата
Поиск
  • Разработка интернет-магазина под ключ
  • Разработка сайтов
  • Разработка леднигов
  • Разработка на битрикс24
  • Разработка на Вордпресс

Кейс: Парсинг Booking.com у реальному часі на туристичному сайті

Іноді виникають завдання, коли нам необхідно отримати у значних обсягах дані зі сторінок сайту. І майже завжди при цьому хочеться, щоб цей процес був максимально автоматизованим і дані можна було б без проблем перенести, наприклад, на інший сайт. У цьому випадку нам потрібно написати PHP-парсер – специфічну програму для отримання або збирання будь-якої відкритої інформації з веб-сайтів.

З подібним замовленням до нас звернулися представники однієї туристичної фірми. Їй потрібно отримати дані з найбільшого туристичного агрегатора – парсить сайт booking.com в реальному часі.

Провівши аналіз поставленого завдання, наша команда фахівців розпочала розробку.

Парсер на PHP крок за кроком

Технології

Скласти правильний запит та обробити дані нам допомогла бібліотека cURL. Ця бібліотека є більш просунутою альтернативою функції PHP –file_get_contents. На відміну від неї, cURL дозволяє працювати з куками, із заголовками, дозволяє відправляти форми та переходити по редиректах.

Своєрідною особливістю парсингу веб-сайтів є те, що робота відбувається з вихідним HTML-кодом сторінки, але не даними (текстом, зображеннями і т.д.), які можна побачити користувачеві на сайті.

Прототипування

Виходячи з цього, більшість нашої роботи зводиться до правильного виділення необхідних нам елементів “атакованого” сайту. Так ми плавно переходимо до прототипуванню – процесу застосування різних концепцій, архітектурних та/або технологічних рішень у розробці парсера.

Тестування

Коли пройдено попередній етап, час тестувати парсер booking.com! Для цього застосовуємо методику тест кейсів – сукупності кроків, конкретних умов та параметрів, необхідних для перевірки працездатності нашого парсера. Подібним чином ми перевіряємо коректність даних і навантаження коду парсера на сайт, що піддається “атаці”, і нашого ресурсу.

Парсим сайт Booking.com

Після реалізації технічної частини щодо парсера, справа залишається за малим – отримати дані із сайту booking.com.

Запускаємо парсер і чекаємо, поки інструмент збере всі необхідні нам дані. У цьому випадку – кімнати та їх наявність у певний період, а також усі варіанти цін на цей період. Після цього ми експортуємо отримані дані до бази даних сайту нашого туристичного сервісу та насолоджуємось отриманим результатом.

Подивіться скріншоти та порівняйте – ціни на сайті нашого клієнта збігаються з booking.com. І по-іншому бути не може, адже в момент пошуку скрипт на нашому сайті робить парсит потрібні готелі на Букінгу і отримує звідти всі ціни на доступні номери!

01

/ 03

Що зрештою?

Парсер за лічені хвилини обійде тисячі сторінок ресурсу. Він акуратно і безпомилково відбере потрібне і відкине зайве, ефективно запакувавши кінцеві дані в необхідному вигляді. Цими даними потім можна розпорядитися так, як завгодно. Наприклад, як було в нашому випадку, експортувавши інформацію про номери готелів світу в єдину базу даних.

Иногда возникают задачи, когда нам необходимо получить в значительных объёмах данные со страниц сайта. И почти всегда при этом хочется чтобы этот процесс был максимально автоматизированным и данные можно было бы без проблем перенести, к примеру, на другой сайт. В этом случае нам нужно написать PHP-парсер – специфическую программу для извлечения или сбора любой открытой информации с веб-сайтов.

С подобным заказом к нам обратились представители одной туристической фирмы. Ей требовалось получить данные с крупнейшего туристического агрегатора – парсить сайт booking.com в реальном времени.

Проведя анализ поставленной задачи, наша команда специалистов приступила к разработке.

Парсер на PHP шаг за шагом

Технологии

Составить правильный запрос и обработать данные нам помогла библиотека cURL. Эта библиотека является более продвинутой альтернативой функции PHP – file_get_contents. В отличие от нее, cURL позволяет работать с куками, с заголовками, позволяет отправлять формы и переходить по редиректам.

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

Прототипирование

Исходя из этого, большая часть нашей работы сводится к правильному выделению нужных нам элементов “атакуемого” сайта. Так мы плавно переходим к прототипированию – процессу применения различных концепций, архитектурных и/или технологических решений в разработке парсера.

Тестирование

Когда предыдущий этап пройден, время тестировать парсер booking.com! Для этого применяем методику тест кейсов – совокупности шагов, конкретных условий и параметров, необходимых для проверки работоспособности нашего парсера. Подобным образом мы проверяем корректность получаемых данных и нагрузку кода парсера на сайт, подвергаемый “атаке”, и нашего ресурса.

Парсим сайт Booking.com

После реализации технической части в отношение парсера, дело остаётся за малым – получить данные с сайта booking.com.

Запускаем парсер и ждём, пока инструмент “соберёт” все необходимые нам данные. В данном случае – комнаты и их наличие в определённый период, а также все варианты цен на этот период. После этого мы экспортируем полученные данные в базу данных сайта нашего туристического сервиса и наслаждаемся полученным результатом.

Посмотрите скриншоты и сравните – цены на сайте нашего клиента совпадают с booking.com. И по-другому быть не может, ведь в момент поиска скрипт на “нашем” сайте делает парсит нужные отели на “Букинге” и получает оттуда все цены на доступные номера!

01

/ 03

Что в итоге?

Парсер за считанные минуты обойдёт тысячи страниц “атакуемого” ресурса. Он аккуратно и безошибочно отберёт нужное и отбросит лишнее, эффективно упаковав конечные данные в необходимом виде. Этими данными потом можно распорядиться так, как будет угодно. Например, как было в нашем случае, экспортировав информацию о номерах отелей всего мира в единую базу данных.

Бажаєте обговорити проєкт?

Залишіть ваш номер телефону і наш менеджер зв'яжеться з вами найближчим часом