Как парсить сайты в 2026 году: полное руководство
Разбираем современные подходы к веб-скрапингу — от простых HTTP-запросов до headless-браузеров и AI-агентов — и когда какой выбрать.

Ещё пять лет назад «парсинг сайтов» почти всегда означал одно и то же: скачать HTML через requests, разобрать его через BeautifulSoup и вытащить нужные теги. В 2026 году это работает всё реже — большинство коммерчески значимых сайтов (маркетплейсы, агрегаторы, SPA-приложения) рендерят контент через JavaScript, используют антибот-защиту и меняют вёрстку без предупреждения.
Это руководство — практическая карта современных подходов: когда достаточно простого HTTP-запроса, когда нужен headless-браузер, и когда имеет смысл вообще не писать код самостоятельно.
Проблема: сайты больше не отдают данные просто так
Три вещи усложнили парсинг за последние годы:
- JavaScript-рендеринг. React, Vue и подобные фреймворки собирают DOM в браузере. Исходный HTML, который вы получаете через
fetch, часто содержит только пустой<div id="root">. - Антибот-защита. Cloudflare, DataDome и подобные системы анализируют поведение браузера, TLS-отпечаток и паттерны запросов, блокируя очевидных ботов.
- Нестабильная вёрстка. CSS-классы генерируются автоматически (
css-1x2y3z), структура страницы меняется при каждом деплое фронтенда — хрупкие CSS-селекторы ломаются без предупреждения.
Результат: скрипт, который отлично работал в понедельник, в среду возвращает пустой список.
Три подхода к решению
1. Прямые HTTP-запросы + парсинг HTML
Подходит, если сайт отдаёт данные в исходном HTML (SSR) или есть открытый JSON API за XHR-запросами.
import requests
from bs4 import BeautifulSoup
response = requests.get("https://example.com/catalog")
soup = BeautifulSoup(response.text, "html.parser")
for item in soup.select(".product-card"):
title = item.select_one(".product-title").get_text(strip=True)
price = item.select_one(".product-price").get_text(strip=True)
print(title, price)Плюсы: быстро, дёшево, не требует браузера. Минусы: не работает с SPA, легко ломается при смене вёрстки, не обходит серьёзную антибот-защиту.
2. Headless-браузер (Playwright)
Playwright запускает настоящий Chromium/Firefox/WebKit, выполняет JS и отдаёт финальный DOM — то, что реально видит пользователь.
import { chromium } from "playwright";
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto("https://example.com/catalog", { waitUntil: "networkidle" });
const items = await page.$$eval(".product-card", (cards) =>
cards.map((card) => ({
title: card.querySelector(".product-title")?.textContent?.trim(),
price: card.querySelector(".product-price")?.textContent?.trim(),
})),
);
console.log(items);
await browser.close();Совет
Всегда закрывайте браузер в finally-блоке и переиспользуйте контекст между запросами — запуск нового процесса Chromium на каждый запрос обходится в 200-500 мс лишнего времени и заметно грузит память.
Плюсы: работает почти с любым сайтом, включая SPA. Минусы: медленнее и дороже по ресурсам, требует отдельной инфраструктуры для масштабирования, антибот-системы всё ещё могут детектировать headless-режим по нестандартным сигнатурам.
3. Управляемый сервис / AI-агент (Parsera)
Вместо поддержки своей Playwright-инфраструктуры и селекторов можно описать, что нужно извлечь, а не как — AI-слой сам находит нужные элементы на странице, даже если вёрстка немного изменилась.
from parsera import Client
client = Client(api_key="pk_...")
result = client.scrape(
url="https://example.com/catalog",
fields=["название товара", "цена", "наличие"],
)
print(result.rows)Плюсы: не нужно поддерживать селекторы, устойчивость к изменениям вёрстки, встроенное расписание и уведомления. Минусы: меньше низкоуровневого контроля, стоимость растёт с объёмом запросов.
Сравнение подходов
| Критерий | HTTP + BeautifulSoup | Playwright | Parsera |
|---|---|---|---|
| Работает с SPA | ❌ | ✅ | ✅ |
| Устойчивость к смене вёрстки | ❌ низкая | ⚠️ средняя (селекторы) | ✅ высокая (AI-поля) |
| Скорость на 1 страницу | ✅ быстро | ⚠️ медленнее | ⚠️ зависит от очереди |
| Нужна своя инфраструктура | ✅ минимальная | ❌ да (браузеры, память) | ✅ нет |
| Порог входа | Низкий | Средний | Низкий (no-code) |
Как выбрать
- Простой сайт с серверным рендерингом, разовая задача → HTTP-запросы + BeautifulSoup/lxml.
- SPA, нужен полный контроль над логикой обхода → Playwright, если готовы поддерживать инфраструктуру.
- Регулярный мониторинг, нестабильная вёрстка, нет времени на поддержку селекторов → управляемый сервис вроде Parsera.
Заключение
Универсального «правильного» способа парсить сайты не существует — выбор зависит от того, сколько сайтов вы мониторите, как часто меняется их вёрстка и сколько инженерного времени готовы вкладывать в поддержку. Для разовых задач на статичных страницах простого HTTP-запроса достаточно. Для регулярного мониторинга множества источников с нестабильной вёрсткой AI-подход экономит куда больше времени, чем кажется на старте.
Частые вопросы
Парсинг сайтов законен?+
Сбор общедоступных данных обычно законен, но нужно соблюдать условия использования сайта, не создавать чрезмерную нагрузку и не собирать персональные данные без оснований. Юридические нюансы отличаются по странам и отраслям — при сомнениях консультируйтесь с юристом.
Чем headless-браузер отличается от обычного HTTP-запроса?+
HTTP-запрос получает только исходный HTML — если контент рендерится через JavaScript, вы его не увидите. Headless-браузер (например, Playwright) полностью выполняет JS, как обычный браузер, и позволяет забрать финальный DOM.
Нужно ли писать код, чтобы парсить сайты с Parsera?+
Нет — Parsera позволяет визуально указать контейнер и поля на странице без кода. Но если нужна кастомная логика, доступны API и SDK для Python, Node.js и Go.
Похожие материалы

Законен ли парсинг сайтов: практический чеклист рисков для бизнеса
Когда парсинг сайтов допустим, а где появляются риски: персональные данные, авторские права, базы данных, условия сайта и нагрузка.

Как составить бриф на парсинг сайта: вопросы, которые экономят недели
Шаблон брифа на парсинг сайта: цель, источники, поля данных, частота обновления, формат результата, интеграции, ограничения, качество и критерии приемки.

Что такое Web Scraping API и когда он лучше собственного парсера
Разбираем Web Scraping API: запуск задач, JSON-результаты, статусы, webhooks, очереди, лимиты, качество данных и интеграции с backend-системами.