Парсинг сайта c рейсами
7 000 руб. за проект
•
наличный расчёт, безналичный расчёт, электронные деньги
ЗадачаСобрать данные о вылетах и их задержках с сайта flightradar.
Ниже приведён пример ссылки, с которыми придётся работать.
https://www.flightradar24.com/data/airports/dme/departures
Все данные нужно сохранить в таблицах. Для каждой даты создаётся отдельная папка, которая
содержит информацию о полётах конкретного аэропорта, в названии файла используется код
IATA данного аэропорта, например, для Домодедово - DME. Таким образом дерево файлов
выглядит следующим образом, где названием файла выступает код аэропорта:
...
08.02.2018 ( folder )
-AAA.file
-AAB.file
-AAC.file
...
В файле содержится информацию о всех полётах, одна строка файла соответствует одной записи, например, для прикреплённого файла
пример_окна.png первая строка раскладывается в файле следующим образом:
Время вылета: 5:40 AM
Фактическое время вылета: 5:42 AM
Номер рейса - B2954
Аэропорт прибытия - Minsk (MSQ)
Оператор - Belavia
Тип судна - B735
Идентификатор судна - EW-252PA
Каждый день парсер будет собирать данные за прошлый день со всех аэропортов. Для того
чтобы получить данные о полётах очередного аэропорта достаточно заменить в адресной строке
код аэропорта на код текущего аэропорта.
Список всех кодов аэропортов можно получить по ссылке ниже. Соответственно, их тоже нужно будет спарсить:
http://www.galaxylogistics.ru/analitika/kodyi-aeroportov-mira-po-iata-iata.html
Так как мы парсим довольно большой объём данных, аэропортов в мире более 11 000 штук, то в случае прерывания парсинга,
мы должны начинать парсить данные за определённый день не с начала ( аэропорт AAA), а с последнего обработанного( спарсенного ) аэропорта.
Мы должны видеть текущий прогресс парсинга при запуске программы - например:
Aeroport AAA is parsing ( remaining 11234 airports to parse ).
Если файл не содержит записей, то сохранять на диск его не нужно, например за определённый день не было полётов с аэропорта AAA, тогда
файл AAA за этот день присутствовать в папке не должен.
Так как скорее всего возможны блокировки со стороны сайта из - за частого обращения к ним, то нужно предусмотреть
механизм умного парсинга на случай блокировки. Нужно рассмотреть различные варианты блокировки(flightradar-ом) в
частности по IP, по HTTP - заголовкам и предусмотреть программное решение для таких случаев. В частности в файле настроек
парсера нужно иметь возможность настроить время задержки между двумя обращениями - минимальное и максимальное количество секунд,
на деле же время задержки между двумя обращениями - случайное число между минимальным и максимальным значением из файла
настроек. Возможно использование платных прокси - серверов для решения задачи или сеть tor.
Программа не должна завершаться аварийно.
Обязательные требованияРаботающая и компилирующая программа с исходниками, содержащая файл настроек. Программа не должна аварийно завершаться в случае блокировки сайтом, откуда парсим данные.
Ниже приведён пример ссылки, с которыми придётся работать.
https://www.flightradar24.com/data/airports/dme/departures
Все данные нужно сохранить в таблицах. Для каждой даты создаётся отдельная папка, которая
содержит информацию о полётах конкретного аэропорта, в названии файла используется код
IATA данного аэропорта, например, для Домодедово - DME. Таким образом дерево файлов
выглядит следующим образом, где названием файла выступает код аэропорта:
...
08.02.2018 ( folder )
-AAA.file
-AAB.file
-AAC.file
...
В файле содержится информацию о всех полётах, одна строка файла соответствует одной записи, например, для прикреплённого файла
пример_окна.png первая строка раскладывается в файле следующим образом:
Время вылета: 5:40 AM
Фактическое время вылета: 5:42 AM
Номер рейса - B2954
Аэропорт прибытия - Minsk (MSQ)
Оператор - Belavia
Тип судна - B735
Идентификатор судна - EW-252PA
Каждый день парсер будет собирать данные за прошлый день со всех аэропортов. Для того
чтобы получить данные о полётах очередного аэропорта достаточно заменить в адресной строке
код аэропорта на код текущего аэропорта.
Список всех кодов аэропортов можно получить по ссылке ниже. Соответственно, их тоже нужно будет спарсить:
http://www.galaxylogistics.ru/analitika/kodyi-aeroportov-mira-po-iata-iata.html
Так как мы парсим довольно большой объём данных, аэропортов в мире более 11 000 штук, то в случае прерывания парсинга,
мы должны начинать парсить данные за определённый день не с начала ( аэропорт AAA), а с последнего обработанного( спарсенного ) аэропорта.
Мы должны видеть текущий прогресс парсинга при запуске программы - например:
Aeroport AAA is parsing ( remaining 11234 airports to parse ).
Если файл не содержит записей, то сохранять на диск его не нужно, например за определённый день не было полётов с аэропорта AAA, тогда
файл AAA за этот день присутствовать в папке не должен.
Так как скорее всего возможны блокировки со стороны сайта из - за частого обращения к ним, то нужно предусмотреть
механизм умного парсинга на случай блокировки. Нужно рассмотреть различные варианты блокировки(flightradar-ом) в
частности по IP, по HTTP - заголовкам и предусмотреть программное решение для таких случаев. В частности в файле настроек
парсера нужно иметь возможность настроить время задержки между двумя обращениями - минимальное и максимальное количество секунд,
на деле же время задержки между двумя обращениями - случайное число между минимальным и максимальным значением из файла
настроек. Возможно использование платных прокси - серверов для решения задачи или сеть tor.
Программа не должна завершаться аварийно.
Обязательные требованияРаботающая и компилирующая программа с исходниками, содержащая файл настроек. Программа не должна аварийно завершаться в случае блокировки сайтом, откуда парсим данные.
- Файлы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.