Перейти к основному содержимому
Инструменты Python2026-07-29 · 10 мин чтения

Парсинг веб-страниц Python в 2026 году: httpx + BeautifulSoup + Playwright — когда какой использовать

В большинстве руководств по очистке веб-страниц Python от 2018 года по-прежнему рекомендуются requests + BeautifulSoup. С частью «запросов» все в порядке, но теперь есть лучшие значения по умолчанию, и половина современных веб-сайтов отображает контент в JavaScript, поэтому классический стек молча возвращает пустые страницы.

В этом руководстве рассматривается дерево решений 2026 года: когда «httpx + BeautifulSoup» подходит (по-прежнему более 90% сайтов), когда обращаться к «Драматургу», как избежать блокировки и два правила, которые сделают ваш парсер одновременно законным и этичным.

Дерево решений в одном изображении

▶ PYTHONeditable · runs in your browser

Вот и все. Девяносто процентов задач парсинга — это статический HTML — классический стек (переименованный) — подходящий инструмент. Остальное требует исполнения JS, и «Драматург» — современный ответ.

Шаг 1: httpx + BeautifulSoup (случай 90%)

httpx — это полная замена requests. Тот же API, плюс поддержка HTTP/2 и встроенная асинхронность. BeautifulSoup не изменился с 2015 года — выбор парсера имеет значение (lxml работает в 5 раз быстрее, чем по умолчанию).

▶ PYTHONeditable · runs in your browser

Ключевые варианты:

  • `headers={"User-Agent": ...}` — всегда устанавливайте настоящий UA (контактный адрес указывается вежливо). UA по умолчанию httpx часто блокируется.
  • `timeout=10` — никогда не делать неограниченный запрос; зависшие соединения приводят к утечке дескрипторов файлов.
  • `raise_for_status()` — рейз на 4xx/5xx, поэтому неудачи громкие, а не тихие.
  • `"lxml"` синтаксический анализатор — в 5 раз быстрее, чем стандартный html.parser, и более прощает искажения HTML.
  • `soup.select("css-selector")` — трактуйте очистку как «представьте, что вы используете document.querySelectorAll» JavaScript. Обычно вам нужны CSS-селекторы, а не API обхода по дереву.

Шаг 2: Драматург (когда JS визуализирует контент)

Многие современные SPA (React, Vue, Angular) поставляют пустой <div id="root"> и гидратируют все на стороне клиента. httpx.get предоставляет вам пустую оболочку — нужные вам данные загружаются через fetch после загрузки страницы.

Тест: httpx.get(url).text — поиск нужных данных. Если его нет, сайту необходимо выполнение JS.

▶ PYTHONeditable · runs in your browser

Установка: pip install playwright && playwright install chromium (загрузка браузера занимает ~150 МБ — один раз стоит того, болезненно при каждом запуске CI без кэширования).

Стоимость: Playwright в 10-50 раз медленнее, чем httpx (загрузка страницы + выполнение JS + накладные расходы браузера). Используйте его только в том случае, если данные не находятся в статическом HTML.

Четыре способа быть заблокированным

Большинство систем защиты от царапин отслеживают эти четыре отпечатка пальца:

1. Отсутствует/очевиден пользовательский агент

▶ PYTHONeditable · runs in your browser

2. Нет задержки между запросами

Необработанные последовательные запросы забивают сервер. Добавьте задержку, пропорциональную времени ответа — если страница обслуживается 500 мс, подождите 500–2000 мс между запросами. asyncio.sleep(random.uniform(0.5, 2.0)).

3. Запрос запрещенных путей /robots.txt

Некоторые сайты используют файл robots.txt для достоверных сигналов скорости — проверьте перед парсингом:

▶ PYTHONeditable · runs in your browser

4. Несовпадение отпечатков TLS и браузера

Расширенная защита от очистки (Cloudflare, DataDome) позволяет получить отпечатки пальцев вашего рукопожатия TLS и среды JS. httpx не похож на Chrome на уровне TLS. Опции:

  • curl_cffi — библиотека на основе олицетворения завитка, которая имитирует настоящий браузерный TLS.

— Драматург — настоящий браузер TLS по определению.

  • Ротация резидентных прокси — ядерный вариант.

Для 99% случаев использования (не враждебные сайты, умеренный объем, вход в систему не требуется) достаточно уважения к httpx + реальный UA + задержка + robots.txt. Если вы масштабно очищаете сайты, защищенные Cloudflare, вам нужны настоящие браузеры или платные услуги разблокировки.

Ограничение скорости (семафор + схема сна)

Для массового парсинга объедините asyncio.Semaphore (максимальное число одновременностей) с asyncio.sleep (задержка для каждого запроса):

▶ PYTHONeditable · runs in your browser

Ограничение на уровне 5–10 одновременных запросов + задержка 500 мс–2 с на запрос позволяет значительно снизить уровень срабатывания сигналов тревоги об ограничении скорости на большинстве сайтов.

Юридические и этические правила

1. Прочтите Условия обслуживания сайта. Многие из них прямо запрещают сбор данных — вы все равно можете это делать (ToS — это договорное право, а не уголовное право в большинстве юрисдикций), но вы берете на себя юридический риск. В деле LinkedIn v. hiQ (2022 г.) было установлено, что сбор общедоступных данных не является нарушением CFAA в США, но ношение толстовки с капюшоном не делает вас невидимым.

2. Не собирайте личные данные. GDPR/CCPA/все остальное предусматривает наказание за сбор личной информации без согласия. Если вы создаете набор данных «сотрудники компании X», остановитесь.

Этические дополнения, о которых все забывают:

  • Отправьте реальный контактный адрес в вашем UA. Если ваш бот вызывает проблемы, владелец сайта сможет написать вам по электронной почте.
  • Если вы кэшируете данные сайта, кэшируйте агрессивно — не затрагивайте их серверы при каждом запуске.

– Отдавайте предпочтение общедоступным API, даже если они платные. Дешевле, чем юридический риск.

Обзор инструментов 2026 года

| Задача | Достичь |

|---|---|

| Статические HTML-страницы | httpx + BeautifulSoup(html, "lxml") |

| JS-рендеринг SPA | Драматург (Хром без головы) |

| Cloudflare/антибот | curl_cffi или Драматург + резидентный прокси |

| Выскабливание больших объемов | httpx.AsyncClient + Семафор + сон |

| Структурированные данные API | httpx.get + .json() — суп не нужен |


Парсинг веб-страниц в 2026 году на 90% по-прежнему будет использовать «httpx + BeautifulSoup», плюс знание того, когда следует перейти к реальному браузеру. Овладейте навыками вежливого парсинга (настоящий UA, семафор, сон, robots.txt), и вы сможете построить надежные конвейеры данных, не подвергаясь блокировке или судебному преследованию.

Следующий шаг: Наука о данных содержит 15 уроков по парсингу, ETL и pandas — вы создадите настоящий сквозной конвейер от выборки HTTP до DataFrame и экспорта CSV.

Готовы попробовать?

15 уроки бесплатно после бесплатной регистрации — без карты. Попробуйте платформу, а затем принимайте решение.

Начни бесплатно →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.