@nevro
не пойми кто

Как распарсить строку и построить дерево категорий товаров и услуг?

Scrapy и прочие варианты - здорово, но для самообразования и прокачки логики не годится.
К примеру, нужно распарсить строку и построить дерево категорий товаров и услуг (из прошедшего конкурса яндекса по android-разработке): https://money.yandex.ru/api/categories-list
кусок: [{"title":"Телефон","subs":[{"id":157291,"title":"Мобильная связь"},

Тут информация структурирована, а не просто массив. И так же в условии сказано про дерево. Значит,
1. сначала нужно выбрать тип данных, подходящий для хранения информации в такой структуре? Для такой структуры как в условии, лучше взять dict, или писать свой?
2. В общем виде, алгоритм выглядит как циклы прохождения по строке и проверки каждого символа на все эти скобки, двоеточия, запятые, кавычки и остальное?
3. В питоне для таких проходов и сравнений используются регулярные выражения? Только начал языком интересоваться - успел узнать только про split у строкового типа.
  • Вопрос задан
  • 3579 просмотров
Решения вопроса 1
orlov0562
@orlov0562
I'm cool!
Я напишу в целом, т.к. это подойдет для любого языка

Алгоритм работы парсера довольно прост, и по большей части делится на 3и этапа:
1) Получить данные
2) Разобрать данные
3) Сохранить данные

1) Для того чтобы получить данные, надо изучить стек функций для работы с сетью. Можно гуглить по такому запросу "Как скачать веб-страницу" + твой ЯП (PHP, Java, Python и т.д.). Тут ты должен написать функцию которой на вход передашь url, а на выход получишь данные (html, json, xml и т.д.)

2) Разобрать данные можно либо с помощью готовых библиотек под нужный формат, либо с помощью регулярных выражений, либо с помощью строковых функций. Тут на помощь придет запрос "Строковые функции" + твой ЯП или "регулярные выражения" + твой ЯП. На этом этапе ты должен написать функцию, которой на вход поступают данные, а на выходе получаешь заранее утвержденную структуру.

3) Сохранять данные в необходимой структуре можно в файлы или в БД. Опять в гугл с запросом "Работа с бд " + твой ЯП, либо "Работа с файлами" + твой ЯП. Тут твоя задача написать функцию, на вход которой приходит заранее утвержденная структура, а на выходе ты получаешь результат "сохраненные данные"

Ну, собственно и всё. Идешь в гугл, изучаешь матчасть и пишешь парсер.

Если же тебя в большей степени интересуют алгоритмы разбора, тогда советую посмотреть код "калькуляторов" на твоем ЯП, погуглить можно по запросу "калькулятор со скобками", "Разбор и вычисление выражений". Это классическая задача, разбор твоего куска будет очень похож.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@olexande
Для хранения, возможно деревья помогут ...
habrahabr.ru/post/112421
Ответ написан
Комментировать
nonlux
@nonlux
Почитай банду четырех )
Например интерпритатор
Ну и многое другое от них, позволит создать лаконичный парсер.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы