Вебскрапінг із NODRIVER у 2026 році
У цьому посібнику я поясню, що NODRIVER що це таке, чому він відрізняється та як ви можете використовувати його для створення власних вебскраперів — навіть якщо ви лише починаєте програмувати або займатися вебскрапінгом.
Що таке NODRIVER?
NODRIVER — це інструмент автоматизації браузера на основі Python. Він дає змогу відкривати вебсайти, взаємодіяти з ними та збирати дані — усе через код.
На відміну від багатьох інструментів для вебскрапінгу, NODRIVER не залежить від Selenium чи Puppeteer. Він не використовує ChromeDriver Натомість він використовує власний метод керування браузером. Це дає йому кілька переваг:
- Він краще уникає виявлення, ніж традиційні інструменти.
- Для нього потрібно менше налаштувань.
- Він підтримує сучасне асинхронне програмування.
Покращуйте свій вебскрапінг за допомогою MCP Servers
Якщо вам потрібне просте й недороге рішення для масштабного або складного вебскрапінгу, зокрема для сайтів із CAPTCHA або розширеним захистом від ботів, тоді варто розглянути Model Context Protocol (MCP) від Bright Data.
Я не пов’язаний із Bright Data, просто мені дуже подобається використовувати MCP-сервери. Їхній MCP-сервер дає вам доступ до ВСІХ їхніх продуктів в одному місці. Перевірте усі доступні інструменти.
А тепер повернімося до NODRIVER!
Навіщо використовувати NODRIVER для вебскрапінгу?
Вже існує багато інструментів, як-от Selenium, Playwright і Puppeteer. Тож чому комусь варто звернути увагу на NODRIVER?
Ось кілька причин:
1. No External Drivers
Традиційним інструментам на кшталт Selenium потрібен ChromeDriver, який може бути незручним для встановлення та оновлення. NODRIVER цього не потребує. Вам потрібні лише Python і Браузер на базі Chrome (наприклад, Chrome або Brave).
2. Simple Setup
Ви можете встановити NODRIVER лише однією командою:
pip install nodriver
Іншого налаштування не потрібно. Вам не доведеться мати справу зі складними шляхами чи системними змінними.
3. Асинхронний за своєю природою
Більшість бібліотек для вебскрапінгу є синхронними. Це означає, що вони виконують лише одне завдання за раз. NODRIVER використовує асинхронні функції, які дають змогу робити більше за менший час — ідеально для одночасного скрапінгу кількох сторінок.
4. Краще уникає виявлення
Вебсайти стають дедалі кращими у виявленні ботів. Оскільки NODRIVER не дотримується тих самих шаблонів, що й Selenium або Puppeteer, у деяких випадках йому вдається уникати виявлення.
Налаштування вашого першого скрипта NODRIVER
Let’s walk through the steps to scrape a simple website using NODRIVER.
Крок 1: Встановіть NODRIVER
Відкрийте термінал і виконайте:
pip install nodriver
Переконайтеся, що у вас також встановлено Python 3.7.
Крок 2: Напишіть базовий скрипт
Ось базовий каркас скрипта NODRIVER:
import nodriver
async def main():
browser = await nodriver.start()
page = await browser.get("https://example.com")
await page.close()
if __name__ == '__main__':
nodriver.loop().run_until_complete(main())
Цей скрипт відкриває браузер, відвідує вебсайт, а потім закриває його.
Навігація сторінками та збирання даних
Тепер заглибмося й подивімося, як можна зібрати реальні дані.
Приклад: вебскрапінг цитат із вебсайту
Let’s say you want to collect quotes from a website like https://quotes.toscrape.com. Цей сайт створено для практики вебскрапінгу.
Ось як зібрати всі цитати на одній сторінці:
import nodriver
async def main():
browser = await nodriver.start()
page = await browser.get("https://quotes.toscrape.com")
quotes = await page.select_all("div.quote")
for quote in quotes:
text = (await quote.query_selector("span.text")).text
author = (await quote.query_selector("small.author")).text
print(f"{text} - {author}")
await page.close()
if __name__ == '__main__':
nodriver.loop().run_until_complete(main())
Handling Multiple Pages
Багато сайтів розбивають дані на кілька сторінок. Це називається пагінацією.
Щоб це обробити, потрібно знаходити кнопку “Next” і переходити на нові сторінки, доки вона не зникне.
Ось як це зробити:
import nodriver
async def main():
browser = await nodriver.start()
base_url = "https://quotes.toscrape.com"
next_url = "/"
while next_url:
page = await browser.get(base_url next_url)
quotes = await page.select_all("div.quote")
for quote in quotes:
text = (await quote.query_selector("span.text")).text
author = (await quote.query_selector("small.author")).text
print(f"{text} - {author}")
next_btn = await page.select("li.next > a")
if next_btn:
attrs = next_btn.attributes
for i in range(len(attrs)):
if attrs[i] == "href":
next_url = attrs[i 1]
break
else:
next_url = None
await page.close()
if __name__ == '__main__':
nodriver.loop().run_until_complete(main())
Ця версія проходить усі сторінки й виводить кожну цитату, яку знаходить.
Витягування та збереження даних
Замість того щоб друкувати дані, ви можете зберегти їх у файлі. Для цього JSON є гарним форматом.
Ось як зберегти зібрані цитати у файл JSON:
import nodriver
import json
async def main():
browser = await nodriver.start()
base_url = "https://quotes.toscrape.com"
next_url = "/"
data = []
while next_url:
page = await browser.get(base_url next_url)
quotes = await page.select_all("div.quote")
for quote in quotes:
text = (await quote.query_selector("span.text")).text
author = (await quote.query_selector("small.author")).text
tags = [tag.text for tag in await quote.query_selector_all("a.tag")]
data.append({
"quote": text,
"author": author,
"tags": tags
})
next_btn = await page.select("li.next > a")
if next_btn:
attrs = next_btn.attributes
for i in range(len(attrs)):
if attrs[i] == "href":
next_url = attrs[i 1]
break
else:
next_url = None
await page.close()
with open("quotes.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
if __name__ == '__main__':
nodriver.loop().run_until_complete(main())
After running this, you’ll get a quotes.json file with all the scraped content.
Поточні виклики з NODRIVER
Хоча NODRIVER є потужним, це все ще новий інструмент. Це означає, що в ньому є певні помилки та відсутні можливості.
1. Headless-режим може не спрацювати
Запуск NODRIVER без показу браузера (у headless-режимі) інколи не спрацьовує. Це може бути або помилка, або функція, спрямована на уникнення виявлення ботів.
2. Витягування атрибутів працює неідеально
Коли ви намагаєтеся отримати атрибут елемента, NODRIVER повертає список замість словника. Через це з ним важче працювати. Наприклад:
attrs = element.attributes
# [‘href’, ‘/page/2/’]
Потрібно пройтися циклом по цьому списку, щоб знайти те, що вам потрібно.
3. Limited Proxy Support
Using proxies is important for serious scraping. NODRIVER has a create_context() method, but there’s not enough documentation. It may work in the future, but for now, it’s hit or miss.
Вдалі сценарії використання NODRIVER
NODRIVER чудово підходить для:
- Вивчення асинхронного вебскрапінгу
- Уникнення простого виявлення ботів
- Вебскрапінг невеликих сайтів
- Швидке тестування ідей
Якщо ви працюєте над складним проєктом із флоу входу, CAPTCHA або IP-блокуваннями, вам і досі може знадобитися Selenium або Playwright.
Альтернативи NODRIVER
Якщо NODRIVER не підходить вашим потребам, ось кілька надійних інструментів, які варто розглянути:
Playwright
- Повністю асинхронний
- Підтримує headless-режим
- Вбудована підтримка очікування, автентифікації та завантаження файлів
Selenium
- Дуже зрілий
- Підтримує багато браузерів
- Велика спільнота та багато навчальних матеріалів
Scrapy
- Найкраще підходить для вебскрапінгу у великому масштабі
- Працює із селекторами та пайплайнами
- Створено для обходу кількох сторінок і збереження даних
Майбутнє NODRIVER
NODRIVER іще розвивається. Розробник, який стоїть за ним, також є творцем Undetected Chromedriver, що був популярним завдяки можливості уникати виявлення ботів. Такий досвід дає нам упевненість, що з часом NODRIVER стане стабільнішим.
Функції, які, як очікуємо, з’являться незабаром:
- Краще опрацювання атрибутів
- Повна підтримка проксі
- Покращена взаємодія зі сторінкою, наприклад кліки та введення тексту
- Працюючий headless-режим
Conclusion
Вебскрапінг у 2025 році став швидшим і простішим завдяки інструментам на кшталт NODRIVER. Він дає змогу створювати прості й швидкі скрапери з мінімальним налаштуванням. NODRIVER легкий і простий у використанні. Він працює без потреби в Selenium чи Puppeteer. Це робить його чудовим вибором для невеликих проєктів або вивчення асинхронного вебскрапінгу.
Втім, у ньому досі є деякі помилки. Поки що він не повністю підтримує проксі, CAPTCHA або headless-режим. Для більш просунутих потреб кращим вибором будуть інструменти на кшталт Playwright або Selenium. Але якщо ви хочете швидко тестувати ідеї, NODRIVER — чудовий варіант. Це один із найцікавіших інструментів для вебскрапінгу сьогодні.

