Данные и аналитика · 14 октября 2026 · 3 мин чтения
Парсинг динамических сайтов: JavaScript, API и headless-браузеры
Эта страница на узбекском: /uz/blog/dinamik-saytlarni-parsing-qilish
Классический парсер отправляет запрос, получает HTML-страницу и извлекает данные. С современными сайтами это часто не работает: в полученном коде нет ни товаров, ни цен — только каркас страницы и скрипты. Данные подгружаются уже в браузере с помощью JavaScript. Такие сайты называют динамическими, и для сбора данных с них нужны другие подходы.
Почему простой запрос не работает
Многие сайты построены как одностраничные приложения на React, Vue или Angular. Сервер отдаёт минимальный HTML, а браузер выполняет скрипты, которые запрашивают данные с сервера и строят страницу. Программа, которая не выполняет JavaScript, видит только каркас.
Признаки динамического сайта:
- в исходном коде страницы нет нужных данных
- данные появляются после загрузки с задержкой
- при прокрутке подгружаются новые элементы
- адрес страницы меняется без полной перезагрузки
Подход 1. Найти внутренний API
Это самый эффективный способ. Если браузер получает данные с сервера, значит, существует запрос, который их возвращает — обычно в формате JSON. Его можно найти:
- Открыть инструменты разработчика в браузере
- Перейти на вкладку сетевых запросов
- Загрузить страницу и найти запросы, возвращающие нужные данные
- Изучить параметры: страница, фильтры, сортировка
Дальше программа обращается к этому адресу напрямую и получает структурированные данные без разбора HTML. Это быстрее, надёжнее и меньше нагружает сайт.
Ограничения: внутренний API может требовать токены, может измениться без предупреждения, а его использование может противоречить правилам сайта.
Подход 2. Headless-браузер
Если найти API сложно, используют настоящий браузер без графического интерфейса, управляемый программой. Он загружает страницу, выполняет JavaScript и получает итоговую страницу, как её видит пользователь. Популярные инструменты:
- Playwright — современная библиотека для управления Chromium, Firefox и WebKit
- Selenium — давно известный инструмент, поддерживает многие языки
- Puppeteer — библиотека для управления Chromium из Node.js
Браузер позволяет нажимать кнопки, прокручивать страницу, заполнять формы, ждать появления элементов.
Минусы: значительно больше ресурсов, медленнее, сложнее масштабировать. Для сбора тысяч страниц это ощутимо.
Бесконечная прокрутка и подгрузка
На многих сайтах товары подгружаются при прокрутке. В браузере нужно прокручивать страницу и ждать загрузки новых элементов. Но чаще эффективнее найти запрос подгрузки: он обычно принимает номер страницы или смещение, и программа может перебрать все страницы напрямую.
Ожидание элементов
Типичная ошибка при работе с браузером — пытаться извлечь данные до их загрузки. Нужно ждать появления конкретного элемента, а не фиксированное время. Инструменты вроде Playwright имеют встроенные механизмы ожидания.
Защита от автоматизации
Сайты могут защищаться от автоматического сбора: ограничение частоты запросов, проверка браузера, капча. Обход таких защит часто нарушает правила сайта. Если сайт явно защищается, лучше поискать легальный путь: официальный API, партнёрство, покупку данных.
Нагрузка и этика
- Ограничивайте частоту запросов, чтобы не мешать работе сайта
- Собирайте только нужные данные
- Учитывайте условия использования сайта и файл robots.txt
- Не собирайте персональные данные без законных оснований
- Кэшируйте результаты, чтобы не загружать одни и те же страницы
Как выбрать подход
- Есть официальный API — используйте его
- Данные приходят из внутреннего API — обращайтесь к нему
- Страница строится сложно, данных мало — headless-браузер
- Нужен большой объём — комбинация: браузер для получения токенов и API для данных
Поддержка
Динамические сайты часто меняются, и парсер ломается. Нужны мониторинг — оповещение, если данных стало подозрительно мало, — и готовность быстро исправлять. Если нужно настроить сбор данных с динамических сайтов для вашей задачи, напишите — предложим устойчивое и законное решение.
Обсудим задачу
Оставьте имя и телефон — перезвоним, расспросим о процессе и предложим, с чего начать.
Обсудить проект