Как научиться писать парсеры?

Есть очень нестандартные документы XML с нерегулярной структурой.
Есть набор тегов которые я ожидаю в них найти.
Целевые данные могут иметь произвольную вложенность и высокую вариативность в названиях. Некоторые данные могут быть вложенными.
Заранее определить структуру всех документов нельзя.
Вопрос какой подход стоит использовать? Я слышал что тут нужен аналог стейт-машины, но может еще есть подходы? И как вообще все должно быть организовано?
  • Вопрос задан
  • 3017 просмотров
Решения вопроса 1
tsarevfs
@tsarevfs
C++ developer
XML парсим любой библиотекой. Получаем дерево разбора.
https://pep8.ru/doc/dive-into-python-3/14.html
Дальше начинаете обходить дерево и для каждога узла(node) проверять подходит ли он вам.
https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%85%D...
В функции проверки и должна быть вся магия. Возможно вы сможете придумать эвристическое правило от разных параметров. Например:
*путь от корня (root/part/segment/item)
*имя тега
*значения параметров тега
*имена тегов-детей
*...
При необходимости можно пытаться ускорить процесс, если о данных что-то известно. Так можно не обходить все дерево, а отбрасывать его части если мы поняли что это не то что нам нужно.

Если данных очень много и вариативность очень большая (например ищем рекламу на веб страницах) можно заняться машинным обучением. Это отдельная сложная тема выходящая за рамки вопроса.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
solotony
@solotony
покоряю пик Балмера
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы