Веб-скрейпинг с помощью NODRIVER в 2026 году
В этом руководстве я покажу вам, что NODRIVER чем он отличается и как вы можете использовать его для создания веб-скрейперов, даже если вы совсем новичок в кодинге или скрейпинге.
Что такое NODRIVER?
NODRIVER — это инструмент для автоматизации браузера на базе Python. Он позволяет открывать сайты, взаимодействовать с ними и собирать данные — все через код.
В отличие от многих инструментов для скрейпинга, NODRIVER не зависит от Selenium или Puppeteer. Он не использует ChromeDriver Вместо этого он использует собственный способ управления браузером. Это дает ему несколько преимуществ:
- Он лучше обходит детект, чем традиционные инструменты.
- У него меньше требований к настройке.
- Он поддерживает современное асинхронное программирование.
Улучшите скрейпинг с помощью MCP-серверов
Если вам нужно простое и недорогое решение для крупномасштабного или сложного веб-скрейпинга, включая сайты с 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:
импорт nodriver
async def главная():
browser = ожидайте nodriver.start()
page = ожидайте browser.get("https://example.com")
ожидайте page.close()
если __name__ == '__main__':
nodriver.loop().run_until_complete(main())
Этот скрипт открывает браузер, заходит на сайт, а затем закрывает его.
Навигация по страницам и сбор данных
Теперь углубимся и посмотрим, как собирать реальные данные.
Пример: сбор цитат с сайта
Let’s say you want to collect quotes from a website like https://quotes.toscrape.com. Этот сайт создан для практики веб-скрейпинга.
Вот как собрать все цитаты на одной странице:
импорт nodriver
async def главная():
browser = ожидайте nodriver.start()
page = ожидайте browser.get("https://quotes.toscrape.com")
quotes = ожидайте page.select_all("div.quote")
для quote в quotes:
text = (ожидайте quote.query_selector("span.text")).text
author = (ожидайте quote.query_selector("small.author")).text
печать(f"{text} - {author}")
ожидайте page.close()
если __name__ == '__main__':
nodriver.loop().run_until_complete(main())
Handling Multiple Pages
Многие сайты разбивают данные на несколько страниц. Это называется пагинацией.
Чтобы обработать это, нужно находить кнопку «Next» и переходить на новые страницы, пока она не исчезнет.
Вот как это сделать:
импорт nodriver
async def главная():
browser = ожидайте nodriver.start()
base_url = "https://quotes.toscrape.com"
next_url = "/"
в то время как next_url:
page = ожидайте browser.get(base_url next_url)
quotes = ожидайте page.select_all("div.quote")
для quote в quotes:
text = (ожидайте quote.query_selector("span.text")).text
author = (ожидайте quote.query_selector("small.author")).text
печать(f"{text} - {author}")
next_btn = ожидайте page.select("li.next > a")
если next_btn:
attrs = next_btn.attributes
для i в ассортимент(len(attrs)):
если attrs[i] == "href":
next_url = attrs[i 1]
перерыв
else:
next_url = Нет
ожидайте page.close()
если __name__ == '__main__':
nodriver.loop().run_until_complete(main())
Эта версия проходит по всем страницам и выводит каждую найденную цитату.
Извлечение и хранение данных
Вместо вывода данных вы можете сохранить их в файл. JSON хорошо подходит для этого.
Вот как сохранить собранные цитаты в JSON-файл:
импорт nodriver
импорт json
async def главная():
browser = ожидайте nodriver.start()
base_url = "https://quotes.toscrape.com"
next_url = "/"
data = []
в то время как next_url:
page = ожидайте browser.get(base_url next_url)
quotes = ожидайте page.select_all("div.quote")
для quote в quotes:
text = (ожидайте quote.query_selector("span.text")).text
author = (ожидайте quote.query_selector("small.author")).text
tags = [tag.text для tag в ожидайте quote.query_selector_all("a.tag")]
data.append({
"quote": text,
"author": автор,
"tags": tags
})
next_btn = ожидайте page.select("li.next > a")
если next_btn:
attrs = next_btn.attributes
для i в ассортимент(len(attrs)):
если attrs[i] == "href":
next_url = attrs[i 1]
перерыв
else:
next_url = Нет
ожидайте page.close()
с открыть("quotes.json", "w", кодировка="utf-8") в роли f:
json.dump(data, f, ensure_ascii=Ложь, indent=4)
если __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 вам не подходит, вот несколько надежных инструментов, которые стоит рассмотреть:
Драматург
- Полностью асинхронный
- Поддерживает headless-режим
- Встроенная поддержка ожиданий, аутентификации и загрузки файлов
Селен
- Очень зрелый
- Поддерживает множество браузеров
- Большое сообщество и множество обучающих материалов
Scrapy
- Лучше всего подходит для крупномасштабного скрейпинга
- Работает с селекторами и пайплайнами
- Создан для обхода множества страниц и сохранения данных
Будущее NODRIVER
NODRIVER все еще развивается. Разработчик, стоящий за ним, также создал Undetected Chromedriver, который был популярен благодаря обходу бот-детекции. Такой опыт дает уверенность, что со временем NODRIVER станет более стабильным.
Функции, которые мы ожидаем увидеть в ближайшее время:
- Лучшая обработка атрибутов
- Полная поддержка прокси
- Улучшенные взаимодействия со страницей, такие как клики и ввод текста
- Рабочий headless-режим
Заключение
В 2025 году веб-скрейпинг с такими инструментами, как NODRIVER, становится быстрее и проще. Он позволяет создавать простые и быстрые скрейперы с минимальной настройкой. NODRIVER легковесен и прост в использовании. Он работает без необходимости использовать Selenium или Puppeteer. Это делает его отличным выбором для небольших проектов или изучения асинхронного скрейпинга.
Однако в нем все еще есть ошибки. Он пока не полностью поддерживает прокси, CAPTCHA и headless-режим. Для более продвинутых задач лучше подходят инструменты вроде Playwright или Selenium. Но если вам нужно быстро проверять идеи, NODRIVER — отличный вариант. Сегодня это один из самых интересных инструментов для скрейпинга.

