Скрипты-парсеры для сайтов 10 аэропортов №21

10 000 руб. за проект • электронные деньги
23 апреля 2017, 10:42 • 2 отклика • 22 просмотра
Необходимо разработать скрипты для сбора данных о вылетах и прибытиях самолетов в 10 аэропортах:
Код Аэропорт Город URL
BTS M. R. Štefánik Airport Bratislava https://www.bts.aero/en/flights/arrivals-departure...
CGN Cologne Bonn Airport Cologne http://www.koeln-bonn-airport.de/en/flights/depart...
FMM Allgäu-Airport Memmingen Memmingen https://www.allgaeu-airport.com/home/flights-and-f...
NER Neryungri Neryungri http://en.sever.aero/neryungri/
DNK Dnepropetrovsk International Dnepropetrovsk http://dnk.aero/
MME Tees Valley Durham Tees Valley http://www.dtva.co.uk/arrivals-and-departures/
OSR Leoš Janáček Airport Ostrava Ostrava http://www.airport-ostrava.cz/en/page-actual-arriv...
SXB Strasbourg Airport Strasbourg http://strasbourg.aeroport.fr/EN/Passengers/Flight...
PSR Abruzzo Airport Pescara http://www.abruzzoairport.com/volitemporeale.aspx?...
PRN Prishtina International Airport "Adem Jashari" Prishtina http://www.airportpristina.com/information/live-ar...


Требования:
  1. Скрипты могут быть написаны на любом распространенном языке.
  2. Каждый скрипт должен быть разработан таким образом чтобы его можно было вызывать из линуксовой консоли.
  3. Вам будет нужно сообщить нам по и версии, необходимые для работы скрипта (например, python 2.7.*, BeautifulSoup 4.4.*). Скрипт будет запускаться в Docker-контейнере, поэтому, если вы знакомы с докером, то достаточно сообщить название и тэг образа из докер репозитория в котором скрипт сможет правильно работать или предоставить Dockerfile для создания такого образа.
  4. Там, где аэропорты предоставляют данные в форматах json, csv, xml и т. д. предпочтительней использовать их, иначе - делать парсинг html-страниц(ы) с помощью соответствующей библиотеки.
  5. Результат должен содержать как минимум информацию по рейсам, которые приземлились / должны были приземлиться за последние 4 часа и которые по расписанию должны приземлиться в течение ближайших 24 часов, если эта информация доступна на сайте аэропорта.
  6. Скрипт должен всегда работать с англоязычной версией сайта аэропорта при ее наличии.
  7. В результате своей работы скрипт должен вывести в STDOUT только (никаких warning'ов, комментариев, логов и т. п.) JSON-структуру в виде:
{
"airport_id": "HKG",
"departures": [
{
"flightno": "CX828",
"codeshares": [
"TX828",
"ZX828"
],
"check_in_desks": "21 - 23",
"gate": "31",
"terminal": "A",
"scheduled": "2016-10-11 07:27:00",
"estimated": "2016-10-11 07:45:00",
"actual": "2016-10-11 07:46:00",
"raw_status": "Departed at 07:46",
"status": "departed"
}
],
"arrivals": [
{
"flightno": "CX829",
"codeshares": [
"TX829",
"ZX829"
],
"luggage": "11, 12, 14",
"terminal": "B",
"scheduled": "2016-10-11 07:27:00",
"estimated": "2016-10-11 07:25:00",
"actual": "2016-10-11 07:26:00",
"raw_status": "Bag belt open 11, 12, 14",
"status": "landed"
}
]
}

Где
airport_id - ID Аэропорта (согласно кодировки IATA) указан выше в списке аэропортов (трехбуквенный)
departures - массив рейсов вылетов
arrivals - массив рейсов прилетов
flightno - номер рейса
codeshares - массив совмещенных номеров рейсов (если есть)
check_in_desks - стойки регистрации (если есть)
gate - выход на посадку (если есть)
luggage - выдача багажа (если есть)
terminal - терминал (если есть)
scheduled - дата/время вылета/приземления по расписанию по местному времени аэропорта в формате YYYY-mm-dd HH:MM:SS
estimated - прогнозируемые дата/время вылета/приземления (если есть) по местному времени аэропорта в формате YYYY-mm-dd HH:MM:SS
actual - фактические дата/время вылета/приземления (если есть) по местному времени аэропорта в формате YYYY-mm-dd HH:MM:SS
raw_status - статус как он отображается на сайте аэропорта
status - один из:
unknown - статус неизвестен
scheduled - рейс идет по расписанию, обновлено время прибытия
checkin - идет регистрация
boarding - идет посадка
outgate - посадка закончена
departed - рейс вылетел
expected - ожидается скорая посадка
delayed - рейс задерживается
landed - приземлился
cancelled - рейс отменен

Таблица соответствия статусов в аттаче (Flight statuses mapping). Если вы встретили какой-то другой статус, сообщите мне, я скажу как его интерпретировать и добавлю в таблицу.

В 99% случаев, все необходимые рейсы можно получить сделав небольшое количество запросов. Однако бывают сайты, где все обязательные поля (flightno, scheduled, raw_status, status) можно получить только делая по одному запросу на каждый рейс. В таком случае при запуске скрипта будет передан параметр flightno, и тогда скрипт должен найти похожие рейсы и сделать запросы только по ним.
Таким образом, выполнение скрипта в любом случае не должно занимать более 1 минуты.

Маппинг статусов

Отзывы
R50 f33d17224917b24cd6adc2bfe337cdf6
Заказчик
Все супер! Работу выполняет качественно, в срок, лишнего не спрашивает, работает продуктивно, ответственно. Рекомендую доверить ваши заказы Александру.
7 лет назад
Всё просто замечательно. Задание - чёткое, оплата - своевременная, ответы на вопросы - мгновенно. Что ещё надо для плодотворного сотрудничества?!
~ 7 лет назад