Перейти до основного вмісту
Інструмент Python2026-07-29 · 10 хв читання

Python Web Scraping у 2026 році: httpx + BeautifulSoup + Playwright — коли використовувати який

Більшість навчальних посібників із веб-скрапінгу Python за 2018 рік досі рекомендують requests + BeautifulSoup. Частина requests чудова, але тепер є кращі значення за замовчуванням, і половина сучасного Інтернету відображає вміст у JavaScript, тому класичний стек мовчки повертає порожні сторінки.

Цей посібник охоплює дерево рішень 2026 року: коли httpx + BeautifulSoup є правильним (все ще понад 90% сайтів), коли звертатися до Playwright, як уникнути блокування та два правила, які зберігають ваш скребк як законним, так і етичним.

Дерево рішень в одному зображенні

▶ PYTHONeditable · runs in your browser

Ось і все. Дев’яносто відсотків завдань копіювання є статичним HTML — класичний стек (перейменований) є правильним інструментом. Для решти потрібне виконання JS, а Playwright — сучасна відповідь.

Крок 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. Відсутній/очевидний User-Agent

▶ 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 — бібліотека на основі імітації curl, яка імітує справжній TLS браузера.
  • Драматург — справжній TLS браузера за визначенням.
  • Обертання проксі-серверів — ядерний варіант.

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

Обмеження швидкості (семафор + режим сну)

Для масового копіювання поєднайте asyncio.Semaphore (макс. одночасний) із asyncio.sleep (затримка на запит):

▶ PYTHONeditable · runs in your browser

Обмеження на 5-10 одночасних + 500 мс-2 с затримки на запит тримає вас значно нижче того, що викликає сигнали обмеження швидкості на більшості сайтів.

Правові + етичні норми

1. Ознайомтеся з Загальними положеннями та умовами сайту. Багато хто прямо забороняє копіювання — ви все ще можете це робити (у більшості юрисдикцій Умови обслуговування є договірним, а не кримінальним правом), але ви берете на себе юридичний ризик. LinkedIn v. hiQ (2022) встановив, що збирання загальнодоступних даних не є порушенням CFAA в США, але носіння толстовки не робить вас невидимим.

2. Не збирайте особисті дані. GDPR / CCPA / все інше карає за збір особистої інформації без згоди. Якщо ви створюєте набір даних «співробітників компанії X», зупиніться.

Етичні доповнення, про які всі забувають:

  • Надішліть справжню контактну адресу у вашій Україні. Якщо ваш бот створює проблеми, власник сайту повинен мати можливість надіслати вам електронний лист.
  • Якщо ви кешуєте дані сайту, кешуйте агресивно — не вражайте їхні сервери під час кожного запуску.
  • Віддавайте перевагу публічним API, навіть якщо вони платні. Дешевше, ніж юридичний ризик.

Зведення інструментів за 2026 рік

| Завдання | Дотягнутися до |

|---|---|

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

| SPA, відтворений JS | Пламатург (безголовий Хром) |

| Cloudflare / антибот | curl_cffi або Playwright + residential proxy |

| Великооб'ємне вишкрібання | httpx.AsyncClient + семафор + сон |

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


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

Наступний крок: Data Science track містить 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.