@dake1231

Как собрать информацию о турах с нескольких операторов в свою БД?

Здравствуйте! Стоит задача - разработать подбор туров, которая отображает туры соответствующие параметрам с нескольких туроператоров. Список операторов есть, некоторые дают API некоторые нет.
Я посмотрел похожие вопросы в тостере и понял что нужно парсить данные с сайта этих операторов и класть в БД. Допустим это будет каждый день в 2:00.

В связи с этим у меня возникли вопросы:
  1. Какие инструменты стоит использовать в парсинге. Пока думаю Xpath или вот этот вариант
  2. Как вообще эти данные собираются, в каком виде и как их расположить что бы можно было осуществить поиск у себя. Например входные параметры могут быть разные, допустим: 1 взрослый и 1 ребенок или 2 взрослых и 2 ребенка и тд. Вообще понятия не имею и рассуждать не берусь, но как вариант предполагаю что берется максимальное количество свободных мест и кладется в бд. или каждый вариант рассматривается отдельно.
  3. Пользователи ilBEastli , ThePretender , advertise решали эти задачи, хотелось бы Ваши примеры рассмотреть или задать вопросы в skype например


Всем спасибо за ответы!
  • Вопрос задан
  • 2374 просмотра
Пригласить эксперта
Ответы на вопрос 3
ThePretender
@ThePretender
Могу ответить на первый вопрос: никогда не полагайтесь на то, что вам дадут страничку с валидным HTML. Мы юзали для выдирания инфы обычный regexp. Долго и медленно, но зато надёжно. Возможно, для PHP есть библа, которая может построить частичный DOM по невалидному HTML. Для .NET такая библа есть, это более предпочтительный вариант.

По поводу формата хранения есть несколько направлений для размышления:
1. Загуглите стандарты представления информации в туристической отрасли. Полезно для того, чтобы форматировать мозг под эту отрасль, но, по факту, эти стандарты у нас никто не поддерживает.
2. Проанализируйте структуру данных тех операторов, которых вы выбрали. Выделить общую структуру будет несложно.
3. Сразу подумайте о том, по каким параметрам вы будете искать данные. Это ваша основная фича, поэтому ей нужно уделить наибольшее внимание. Подумайте о технологии хранения данных: SQL, NoSQL, гибридное решение (например, в SQL хранятся нормализованные исходные данные, а в NoSQL генерятся денормализованные вьюхи, заточенные под быстрый поиск).

Более подробно на эту тему я ничего сказать не могу, т. к. не работаю в этой отрасли уже 5 лет. За это время появилась куча новых технологий, и подход к хранению данных может быть совершенно другим.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Парсинг: datacol
2. Хранение: деревья на основе ID: id, parent_id, param1,....,paramN
Про детей и взрослых - комбинаторика.
Биты данных: 0 - ребёнок, 1 - взрослый, 00-11 - кол-во от 0 до 3.
Тогда:
000000 - мест нет
000001 - 1 ребенок
000101 - 1 взрослый
101001 - 1 взрослый и 1 ребёнок
110001 - 2 взрослых и 1 ребёнок
110010 - 2 взрослых и 2 ребёнка
111011 - 3 взрослых и 3 ребёнка
При фиксированном порядке следования данных можно избавиться от 2-х лишних битов.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
1)Лучше без всяких инструментов обычной регуляркой.
2)Каждый отдельно
3)Не решали.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы