Парсинг станций метро Москвы

Необходимо распарсить страницу Список станций Московского метрополитена и из полученных данных получить:

  • Линии московского метро (получаете имя линии, номер линии, цвет парсить не надо).

  • Станции московского метро (получаете имя станции, номер линии).

После получения необходимой информации, необходимо создать и записывать на диск JSON-файл со списком станций по линиям и списком линий по формату JSON-файла ниже (странции, линии и тд могут отличаться от тех, что есть в файле):

{
    "stations" : {
        "1" : [
            "Девяткино",
            "Гражданский проспект",
            "Академическая",
            "Политехническая",
            "Площадь Мужества",
            "Лесная",
            "Выборгская",
            "Площадь Ленина",
            "Чернышевская",
            "Площадь Восстания",
            "Владимирская",
            "Пушкинская",
            "Технологический институт",
            "Балтийская",
            "Нарвская",
            "Кировский завод",
            "Автово",
            "Ленинский проспект",
            "Проспект Ветеранов"
        ],
        "2" : [
            "Парнас",
            "Проспект Просвещения",
            "Озерки",
            "Удельная",
            "Пионерская",
            "Чёрная речка",
            "Петроградская",
            "Горьковская",
            "Невский проспект",
            "Сенная площадь",
            "Технологический институт",
            "Фрунзенская",
            "Московские ворота",
            "Электросила",
            "Парк Победы",
            "Московская",
            "Звёздная",
            "Купчино"
        ],
        "3" : [
            "Беговая",
            "Новокрестовская",
            "Приморская",
            "Василеостровская",
            "Гостиный двор",
            "Маяковская",
            "Площадь Александра Невского",
            "Елизаровская",
            "Ломоносовская",
            "Пролетарская",
            "Обухово",
            "Рыбацкое"
        ],
        "4" : [
            "Спасская",
            "Достоевская",
            "Лиговский проспект",
            "Площадь Александра Невского",
            "Новочеркасская",
            "Ладожская",
            "Проспект Большевиков",
            "Улица Дыбенко"
        ],
        "5" : [
            "Комендантский проспект",
            "Старая Деревня",
            "Крестовский остров",
            "Чкаловская",
            "Спортивная",
            "Адмиралтейская",
            "Садовая",
            "Звенигородская",
            "Обводный канал",
            "Волковская",
            "Бухарестская",
            "Международная"
        ]
    },
    "connections": [
        [
            {
                "line": 2,
                "station": "Невский проспект"
            },
            {
                "line": 3,
                "station": "Гостиный двор"
            }
        ],
        [
            {
                "line": 1,
                "station": "Площадь Восстания"
            },
            {
                "line": 3,
                "station": "Маяковская"
            }
        ],
        [
            {
                "line": 2,
                "station": "Сенная Площадь"
            },
            {
                "line": 4,
                "station": "Спасская"
            },
            {
                "line": 5,
                "station": "Садовая"
            }
        ],
        [
            {
                "line": 1,
                "station": "Владимирская"
            },
            {
                "line": 4,
                "station": "Достоевская"
            }
        ],
        [
            {
                "line": 1,
                "station": "Пушкинская"
            },
            {
                "line": 5,
                "station": "Звенигородская"
            }
        ],
        [
            {
                "line": 3,
                "station": "Площадь Александра Невского"
            },
            {
                "line": 4,
                "station": "Площадь Александра Невского"
            }
        ]
    ],
    "lines" : [
        {
            "number" : 1,
            "name" : "Кировско-Выборгская",
            "color" : "red"
        },
        {
            "number" : 2,
            "name" : "Московско-Петроградская",
            "color" : "blue"
        },
        {
            "number" : 3,
            "name" : "Невско-Василеостровская",
            "color" : "green"
        },
        {
            "number" : 4,
            "name" : "Правобережная",
            "color" : "orange"
        },
        {
            "number" : 5,
            "name" : "Фрунзенско-Приморская",
            "color" : "violet"
        }
    ]
}

Рекоммендации:

  • Для реализации функционала воспользуйтесь библиотекой nokogiri

Last updated