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