Есть задача написать парсер для сервиса Яндекс.Расписаний, который будет ежедневно анализировать изменения по 2 типам запросов по разным станциям и сохранять информацию в БД + отображать её + отправлять на электронную почту.
Типы запросов:
1. По конкретной станции
rasp.yandex.ru/station/96... цифры являются изменяемым параметром. Для работы парсера список станций задается в виде цифр.
Задача парсера:
- сохранить название станции
- сохранить название рейса и ссылку на него в Я.Р
- время отправления
- дни курсирования
Если скрипт понимает, что поезд уже есть, данные не заменяются, если нет сохраняются с указанием даты появления информации в сиситеме (текущие данные). Скрипт должен сравнивать совпадение 3 параметров рейс, время отправления, дни курсирования. Если что-то отличается, то это новая запись. Если остаются такие записи, которых нет, то они переходят в архивные, в сравнении не участвуют.
2. От станции до Станции
rasp.yandex.ru/search/tra...
Цифры после букв s являются кодами станций, которые задаются для работы парсера.
Задача парсера:
- сохранить название маршрута
- сохранить название рейса и ссылку на него в Я.Р
- время отправления и прибытия
- дни курсирования
Условия сохранения аналогичные п.1
Отображение
По каждому типу запросов информация отображается списком. Название станции или маршрута, ниже новые рейсы в табличной форме ссылками на ЯР. Можно изменить режим отображения отобразить все действующие маршруты (добавляется колонка дата первого сохранения рейса в системе). Отобразить включая архивные (добавляется колонка дата перехода рейса в архивный).
Уточнения
Если рейс перешел в архивный, то с ним уже не нужно сравнивать данные и если он появится через какое-то время вновь с теми же данными, то это будет уже другой рейс.
Задание списка станций и маршрутов
Приветствуется любое упрощение (админка не нужна). Как вариант список станций задается текстовым файлом, коды станций в колонке. Список маршрутов файлом csv, список кодов станций в csv через точку с запятой.
Периодичность работы запускается 1 раз в сутки и сохраняет данные в базе на сервере.
Опубликован 24.12.2014 в 13:40