Как парсить JavaScript-сайты и SPA-приложения
Почему обычные скреперы не работают с React, Vue и Angular, и как собирать данные с SPA: JavaScript-рендеринг, стратегии ожидания и альтернативы.
Команда InfraProxy
26 января 2026 г.
Проблема с JavaScript-сайтами
Более 70% современных сайтов используют JavaScript-фреймворки (React, Vue, Angular) для рендеринга контента. Когда вы отправляете обычный HTTP-запрос через requests или curl, сервер возвращает пустую HTML-оболочку:
<div id="root"></div>
<script src="/app.js"></script>
Весь контент (товары, цены, текст) загружается и отображается через JavaScript уже в браузере. Простой HTTP-клиент JavaScript не выполняет — и получает пустую страницу.
Как определить SPA
Признаки JavaScript-рендеринга:
- При просмотре исходного кода (Ctrl+U) страница почти пустая
- Контент появляется с задержкой после загрузки
- URL не меняется при навигации (или используется #)
- В DevTools (вкладка Network) видны XHR/Fetch-запросы к API
Решения
1. Headless-браузер
Запуск полноценного браузера (Chrome, Firefox) в фоновом режиме. Браузер выполняет JavaScript и рендерит страницу — вы получаете финальный HTML.
Playwright — рекомендуемый инструмент:
- Поддержка Chrome, Firefox, WebKit
- Встроенное ожидание элементов
- API для Python, Node.js, .NET, Java
- Stealth-режим (скрытие автоматизации)
Puppeteer — альтернатива от Google:
- Только Chrome/Chromium
- Node.js API
- Большое сообщество и экосистема
Стратегии ожидания
Ключевой момент: когда считать страницу «загруженной»?
Ожидание сетевой активности. Ждём, пока не прекратятся сетевые запросы. Хорошо для страниц с предсказуемой загрузкой.
Ожидание элемента. Ждём появления конкретного элемента (например, .price или [data-product]). Самый надёжный способ.
Фиксированная задержка. Ждём N секунд. Простейший подход, но ненадёжный — страница может загружаться быстрее или медленнее.
Ожидание JavaScript-условия. Проверяем значение JavaScript-переменной (например, window.dataLoaded === true).
2. Перехват API-запросов
Многие SPA загружают данные через API (REST или GraphQL). Вместо парсинга HTML можно перехватить эти запросы и работать с чистым JSON.
Как найти API:
- Откройте DevTools → вкладка Network
- Фильтр по XHR/Fetch
- Найдите запросы, возвращающие нужные данные
- Воспроизведите запрос с правильными заголовками и параметрами
Преимущества: быстрее, стабильнее, не нужен браузер.
Недостатки: не все сайты имеют открытый API, заголовки могут содержать токены.
3. API для скрейпинга
Специализированные сервисы (FineData Scraper API) автоматически рендерят JavaScript и возвращают готовые данные. Вам не нужно управлять браузерами и их ресурсами.
Ресурсные требования
Headless-браузер потребляет значительно больше ресурсов:
- RAM: 200-500 МБ на каждую вкладку (vs ~5 МБ для HTTP-запроса)
- CPU: активная нагрузка при рендеринге
- Время: 3-15 секунд на страницу (vs 0.5-2 секунды для HTTP)
Это ограничивает параллельность. На сервере с 8 ГБ RAM можно одновременно открыть 10-15 вкладок. Для масштабных задач нужен кластер.
Оптимизация headless-скрейпинга
Блокировка ненужных ресурсов
Отключите загрузку изображений, шрифтов, CSS, аналитики. Это ускоряет загрузку в 2-3 раза и экономит трафик.
Переиспользование контекста
Не создавайте новый браузер для каждого запроса. Используйте один экземпляр с несколькими вкладками. Это экономит время на запуск.
Пул страниц
Создайте пул из N открытых вкладок. Задачи берут вкладку из пула, выполняют парсинг и возвращают. Это стабилизирует потребление памяти.
Прокси для JavaScript-скрейпинга
Headless-браузер с прокси — самая надёжная комбинация:
- Браузер проходит все JavaScript-проверки
- Резидентный прокси обеспечивает чистый IP
- TLS-отпечаток соответствует реальному Chrome
Настройка: прокси указывается при запуске браузера — все запросы (включая загрузку скриптов, стилей, API-вызовы) идут через него.
Читайте также
InfraProxy предоставляет прокси, оптимизированные для headless-браузеров: высокая скорость, стабильные соединения, совместимость с Playwright и Puppeteer. Оставьте заявку.
Нужны надёжные прокси для вашего проекта?
InfraProxy предоставляет серверные и резидентные прокси для российского бизнеса. Договор, постоплата, техподдержка.
Читайте также
Настройка прокси для мониторинга цен конкурентов
Пошаговое руководство по настройке прокси для мониторинга цен: ротация IP, geo-targeting, sticky-сессии, обход антибот-защит. Код на Python и bash.
РуководстваКак настроить прокси для RAG-пайплайна
Практическое руководство по настройке прокси для RAG-пайплайна: архитектура, код на Python, sticky-сессии, расписание обходов. InfraProxy, SOCKS5, 100 000+ IP.
РуководстваNo-code веб-скрейпинг: извлечение данных без программирования
Как настроить сбор данных в 2026 году без написания кода: API для скрейпинга, extract_rules, автоматизация через n8n и Make.com, батчевая обработка 100+ страниц.