Скрипты-парсеры для сайтов 10 аэропортов №21
10 000 руб. за проект
•
электронные деньги
Необходимо разработать скрипты для сбора данных о вылетах и прибытиях самолетов в 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...
Требования:
"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 минуты.
Маппинг статусов
Код Аэропорт Город 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...
Требования:
- Скрипты могут быть написаны на любом распространенном языке.
- Каждый скрипт должен быть разработан таким образом чтобы его можно было вызывать из линуксовой консоли.
- Вам будет нужно сообщить нам по и версии, необходимые для работы скрипта (например, python 2.7.*, BeautifulSoup 4.4.*). Скрипт будет запускаться в Docker-контейнере, поэтому, если вы знакомы с докером, то достаточно сообщить название и тэг образа из докер репозитория в котором скрипт сможет правильно работать или предоставить Dockerfile для создания такого образа.
- Там, где аэропорты предоставляют данные в форматах json, csv, xml и т. д. предпочтительней использовать их, иначе - делать парсинг html-страниц(ы) с помощью соответствующей библиотеки.
- Результат должен содержать как минимум информацию по рейсам, которые приземлились / должны были приземлиться за последние 4 часа и которые по расписанию должны приземлиться в течение ближайших 24 часов, если эта информация доступна на сайте аэропорта.
- Скрипт должен всегда работать с англоязычной версией сайта аэропорта при ее наличии.
- В результате своей работы скрипт должен вывести в 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 минуты.
Маппинг статусов
Отзывы
Все супер! Работу выполняет качественно, в срок, лишнего не спрашивает, работает продуктивно, ответственно. Рекомендую доверить ваши заказы Александру.
7 лет
назад
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.