Своими руками. Как я сделал сервис сбора статистики цен на туры

в 16:00, , рубрики: анализ данных, графики, интересный сервис, Развитие стартапа, статистика, туризм

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

1) Куда поехать отдыхать
Действительно, нужно перечитать множество источников, чтобы определиться, где сейчас (или когда вы там собрались) тепло, нужна ли для въезда в страну виза, сколько стоит путёвка и т.д.

2) Когда поехать отдыхать
Допустим, вы знаете, что хотите провести свой отпуск в Египте, но не знаете когда. Самый важный вопрос для многих — когда дешевле всего туда ехать? Так же важно знать, какая там погода и т.д.

image

Как это работает

Загрузка

У многих туроператоров имеются так называемые xml-шлюзы для выгрузки цен. Через эти шлюзы можно получить цены на те или иные туристические продукты. К сожалению, для доступа к этим данным очень часто требуется договор с туроператором. Так что просто так выполнить экспорт не получится. Для этого пришлось зарегистрироваться как юридическое лицо и помучаться с подписанием множества документов.

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

<entry>
<tour_date>18.11.2014</tour_date>
<aircompany>Трансаэро (аэропорт Пафос / Ларнака)</aircompany>
<town>Пафос / Paphos</town>
<room>STANDARD Inland View BB</room>
<dt>18.11.2014</dt>
<id_hotel>102610001680</id_hotel>
<id_ns>104610415895</id_ns>
<duration>1</duration>
<o_duration>1</o_duration>
<quota>9</quota>
<id_price>121132934133</id_price>
<price>
<amount>435</amount>
<RUR>25435</RUR>
<ag>14+, 14+</ag>
<id_vr>102510005340</id_vr>
</price>
</entry>

Раз в неделю встроенный в Java scheduler начинает процесс сборки информации. За один проход осуществляется просмотр более 4000 отелей в 21 стране мира.

Сбор данных осуществляется более чем со 100 туроператоров.

Данные бережно укладываются в базу данных до востребования.

Новые отели так же добавляются автоматически. Это решает проблему изменения названия отеля или его закрытия.

Так же автоматически осуществляется сбор множества дополнительной информации.

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

Своими руками. Как я сделал сервис сбора статистики цен на туры - 2

На текущий момент в базе данных под управлением Apache Derby содержит примерно 2 Гб данных.

Куда поехать отдыхать

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

На основе статистических данных о ценах, а так же используя вспомогательные данные, а именно:
— Даты и краткое описание праздников;
— Экскурсии, цены на них, краткое описание и тип (познавательные, экстремальные, обзорные);
— Необходимость в визе в ту или иную страну, а так же примерная цена, срок изготовления и место её получения;
— Время перелёта;
— Питание в отеле;
можно рассчитать в процентном соотношении, на сколько подходит каждая из 21 страны, предложенной сервисом.

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

image

Когда поехать отдыхать

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

В этом случае мы просто отображаем так называемую «Карточку страны», которая отразит много полезной информации:

image

Зачем всё это?

На самом деле, всё просто — проект был придуман исключительно для собственного использования. Мне просто хотелось получить сведения для наиболее дешевого и приятного отдыха.

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

Сейчас это хобби, время от времени я занимаюсь его развитием. Особых вложений денег я не осуществляю, кроме хостинга, домена, сертификатов, дизайна и времени (время же деньги).

Могут быть ошибки в вёрстке или другие мелкие проблемы — прошу не судить строго.

Автор: leoleovich

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js