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

Іноді виникають завдання, коли нам необхідно отримати у значних обсягах дані зі сторінок сайту. І майже завжди при цьому хочеться, щоб цей процес був максимально автоматизованим і дані можна було б без проблем перенести, наприклад, на інший сайт. У цьому випадку нам потрібно написати PHP-парсер – специфічну програму для отримання або збирання будь-якої відкритої інформації з веб-сайтів.
З подібним замовленням до нас звернулися представники однієї туристичної фірми. Їй потрібно отримати дані з найбільшого туристичного агрегатора – парсить сайт booking.com в реальному часі.
Провівши аналіз поставленого завдання, наша команда фахівців розпочала розробку.
Парсер на PHP крок за кроком
Технології
Скласти правильний запит та обробити дані нам допомогла бібліотека cURL. Ця бібліотека є більш просунутою альтернативою функції PHP –file_get_contents. На відміну від неї, cURL дозволяє працювати з куками, із заголовками, дозволяє відправляти форми та переходити по редиректах.
Своєрідною особливістю парсингу веб-сайтів є те, що робота відбувається з вихідним HTML-кодом сторінки, але не даними (текстом, зображеннями і т.д.), які можна побачити користувачеві на сайті.
Прототипування
Виходячи з цього, більшість нашої роботи зводиться до правильного виділення необхідних нам елементів “атакованого” сайту. Так ми плавно переходимо до прототипуванню – процесу застосування різних концепцій, архітектурних та/або технологічних рішень у розробці парсера.
Тестування
Коли пройдено попередній етап, час тестувати парсер booking.com! Для цього застосовуємо методику тест кейсів – сукупності кроків, конкретних умов та параметрів, необхідних для перевірки працездатності нашого парсера. Подібним чином ми перевіряємо коректність даних і навантаження коду парсера на сайт, що піддається “атаці”, і нашого ресурсу.
Парсим сайт Booking.com
Після реалізації технічної частини щодо парсера, справа залишається за малим – отримати дані із сайту booking.com.
Запускаємо парсер і чекаємо, поки інструмент збере всі необхідні нам дані. У цьому випадку – кімнати та їх наявність у певний період, а також усі варіанти цін на цей період. Після цього ми експортуємо отримані дані до бази даних сайту нашого туристичного сервісу та насолоджуємось отриманим результатом.
Подивіться скріншоти та порівняйте – ціни на сайті нашого клієнта збігаються з booking.com. І по-іншому бути не може, адже в момент пошуку скрипт на нашому сайті робить парсит потрібні готелі на Букінгу і отримує звідти всі ціни на доступні номери!
Комментарии