Flight Radar Project

Парсинг сайтов уже был ранее, но тут вопрос принципиальный. Отдыхали на природе, рыбачили в Подмосковье, место было выбрано впервые, поблизости был аэропорт, самолеты летали туда обратно. Стало интересно, какое же количество самолетов прибыло в Москву за время проведенное на рыбалке.

Задание:
Распарсить сайт авиакомпании. Залогировать в файл всю доступную информацию относительно прибывших авиарейсах за период времени.

Использовал:

Jsoup log4j

Заходим на сайт авиакомпании, и фильтруем необходимое нам время прибытия самолетов.

Сохранил html страничку, что бы всегда была возможность парсить с постоянными данными.

Инициализация Logger и настройки в log4j.xml

public static final Logger LOGGER = LogManager.getLogger(FlightHistory.class);
<File name="MyFile" fileName="all.log" immediateFlush="true" append="false">
    <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>

Читаем файл и парсим его в Document doc.

private static final String FILEPATH = "D:\\arrival.html";
        File input = new File(FILEPATH);
        Document doc = Jsoup.parse(input, "utf-8");

В цикле разбираем коллекцию.

Elements allflightsblocks = doc.select("#table > tbody > tr.vat");
 for (Element allflightsblock : allflightsblocks) {
 String plannedTime = allflightsblock.select("td:nth-child(2)").text().replace("May  ", "May 2018 ");

Работа с датой – SimpleDateFormat патерн.

SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy hh:mm", Locale.ENGLISH);
Date date = formatter.parse(plannedTime);

Логирование в файл.

LOGGER.info("Planned time: " +plannedTime);
LOGGER.info("Actual time: " +actualTime);

Вывод в консоль:

10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - --------
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Upper time: 15 minutes
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Planned time: 26 May 2018 14:55
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Actual time: 26 May 2018 14:40
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Flight number: U6 144
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Departure airport: ANAPA
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Status : Arrived Bags delivered
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - --------
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Upper time: 45 minutes
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Planned time: 26 May 2018 15:00
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Actual time: 26 May 2018 14:15
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Flight number: JL 421
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Departure airport: TOKYO
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Status : Arrived Bags delivered
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - ---------------------------------
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - All flights: 161
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Arrived flights: 157
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Cancelled flights: 4
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Delay fly: 65 airFlights
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - Total delay : -899 minutes
10:23:41.811 [main] INFO  ru.gotoqa.FlightHistory - ---------------------------------

Ссылка на GitHub:
Github Flight Radar Project

Related Posts