Открыть сервисСервис

Парсинг данных и документов

Парсинг — это процесс разбора структурированных или неструктурированных данных из различных источников (веб-страниц, файлов, баз данных, потоков сообщений) с целью извлечения нужной информации и преобразования её в удобный для дальнейшей обработки формат. Термин происходит от английского parsing (в свою очередь от лат. pars — часть) и означает «разбор по частям». В информатике парсингом также называют синтаксический анализ — этап обработки языков программирования и формальных языков, при котором последовательность символов преобразуется в дерево синтаксического разбора (AST) согласно грамматике.

Основные виды парсинга

Парсинг веб-страниц (веб-скрапинг)

В бытовом и коммерческом контексте под парсингом чаще всего понимают автоматический сбор данных с сайтов. Скрипт (парсер) обращается к веб-странице по HTTP-запросу, получает HTML-код, затем находит в нём нужные элементы — заголовки, цены, описания, изображения, ссылки — и сохраняет их в структурированном виде: таблицу, JSON, XML или базу данных.

Для извлечения данных из HTML используются:

  • CSS-селекторы и XPath — языки адресации элементов страницы, позволяющие точно указать, какие теги нужны (например, div.price > span или //h2[@class='title']);
  • DOM-парсеры — библиотеки, строящие дерево документа и облегчающие навигацию по нему;
  • Готовые фреймворки — Scrapy и BeautifulSoup на Python, Cheerio на Node.js, jsoup на Java.

Синтаксический анализ в информатике

В теории формальных языков парсинг — это преобразование входной последовательности токенов в дерево разбора согласно грамматике. Различают:

  • Левосторонний разбор — грамматика раскрывается слева направо, строится левоеmost-дерево;
  • Правосторонний разбор — аналогично, но справа налево;
  • Нисходящий парсинг — от корня (стартового символа) к листьям (терминалам);
  • Восходящий парсинг — от входных символов к корню.

Популярные инструменты: ANTLR, Bison, Yacc, парсер-комбинаторы (Parsec, Parsley). Результат работы парсера компилятора — синтаксическое дерево, которое затем используется для генерации кода, интерпретации или статического анализа.

Парсинг структурированных форматов

Для данных в известном формате (JSON, XML, CSV, YAML) парсинг сводится к десериализации: чтению потока символов и построению объектов в памяти программы. Здесь обычно не требуется грамматика — достаточно стандартной библиотеки языка программирования (json.load в Python, JSON.parse в JavaScript).

Типичные задачи парсинга

  • Сбор конкурентной разведки — мониторинг цен и ассортимента в интернет-магазинах;
  • Наполнение каталогов и агрегаторов (товары, вакансии, недвижимость);
  • Аналитика социальных медиа — сбор публичных постов и комментариев для исследований;
  • Индексация поисковыми системами — краулеры Google и Яндекса фактически являются парсерами;
  • Извлечение данных из документов — PDF, счетов, договоров, сканов (в т.ч. с применением OCR);
  • Обучение языковых моделей — сбор корпусов текста из открытых источников.

Правовые и технические ограничения

Законность парсинга зависит от юрисдикции и условий использования сайта. В России сбор общедоступных данных обычно не запрещён, однако обход технических средств защиты (капч, авторизации, ограничений частоты запросов) может квалифицироваться как несанкционированный доступ к компьютерной информации (ст. 272 УК РФ). Многие сайты в пользовательских соглашениях прямо запрещают автоматический сбор данных. Отдельно регулируется персональные данные — их обработка подчиняется Федеральному закону № 152-ФЗ «О персональных данных».

Сайты защищаются от парсинга несколькими способами:

  • Капчи (CAPTCHA) — задачи, которые трудно решить алгоритмически;
  • Ограничение частоты запросов (rate limiting) и блокировка IP-адресов;
  • Динамическая генерация HTML с помощью JavaScript — данные подгружаются после загрузки страницы, что требует использования headless-браузеров (Puppeteer, Playwright, Selenium);
  • Проверка User-Agent и других HTTP-заголовков.

Парсинг и машинное обучение

В контексте обработки естественного языка (NLP) парсинг означает построение синтаксической или семантической структуры предложения: разбор на части речи (POS-таггинг), выявление грамматических отношений (зависимостный или фразовый парсинг), определение семантических ролей. Такие инструменты, как Stanza, spaCy и UDPipe, используются для анализа русского языка в лингвистических и прикладных исследованиях.

Пример простого парсера

Минимальный парсер на Python с использованием BeautifulSoup выглядит примерно так: библиотека requests загружает страницу, BeautifulSoup разбирает HTML-код в дерево объектов, затем с помощью CSS-селектора извлекается, например, список заголовков новостей и сохраняется в CSV-файл. Такой скрипт в несколько десятков строк способен собирать сотни записей в час.

Источники:

  • Марков К. А. «Алгоритмы и структуры данных»
  • Голдберг Э., Робсон Д. «Язык программирования Java»
  • Документация библиотек BeautifulSoup, Scrapy, spaCy
  • Федеральный закон № 152-ФЗ «О персональных данных»
  • Уголовный кодекс РФ, статья 272
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru