Парсинг сайта c рейсами

7 000 руб. за проект • наличный расчёт, безналичный расчёт, электронные деньги
13 февраля 2018, 12:32 • 3 отклика • 43 просмотра
ЗадачаСобрать данные о вылетах и их задержках с сайта 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.

Программа не должна завершаться аварийно.


Обязательные требованияРаботающая и компилирующая программа с исходниками, содержащая файл настроек. Программа не должна аварийно завершаться в случае блокировки сайтом, откуда парсим данные.

Файлы