Браузерный агент для парсинга — это скрипт на связке LLM и Playwright, который открывает страницу как живой пользователь, дожидается рендера JS и сам решает, что кликнуть и что вытащить. В отличие от классического парсера на requests и BeautifulSoup,…
10+ лет в маркетинге, 300+ клиентских проектов: сайты, реклама, боты. Создатель GoBanana (228K+ пользователей, 11.6 млн ₽ выручки) и VibeCoderz. Делаю AI-продукты сам через Claude Code, Cursor, Windsurf и консультирую тех, кто хочет так же.
Об авторе →Claude Code: новый CLI-агент от Anthropic
Anthropic выпустила Claude Code — терминальный AI-агент для разработчиков. Инструмент работает прямо в командной строке и умеет писать, редактировать и запускать код.
Zcode AI: Полный гид по визуальному интерфейсу для Claude Code и AI-агентов
Узнайте, как использовать Zcode для управления Claude Code, Gemini и Codex в едином GUI. Настройка провайдеров, MCP-серверов и визуальный вайбкодинг.
YouTube-канал с монетизацией из любой точки мира: Пошаговый гайд 2026
Инструкция по созданию YouTube-канала: обход блокировок SMS, настройка расширенных функций через виртуальные номера и правила безопасности для монетизации.
Windsurf Code Maps: Как глубоко понимать архитектуру проекта перед написанием кода
Полный гайд по Windsurf Code Maps, модели Sway 1.5 и Sway Grep. Узнайте, как визуализировать архитектуру кода и ускорить разработку в 13 раз.
Vk Fast Cash Strategy
Аудитория ВКонтакте — это те же люди, что и в Instagram, но 'социальный контракт' площадки другой. Если Instagram — это 'дорогой ресторан' с демонстрацией успеха, то VK — это 'душевная шашлычная'. Здесь не работает глянцевый 'успешный успех
Браузерный агент для парсинга — это скрипт на связке LLM и Playwright, который открывает страницу как живой пользователь, дожидается рендера JS и сам решает, что кликнуть и что вытащить. В отличие от классического парсера на requests и BeautifulSoup, ему не нужны CSS-селекторы: вы описываете задачу словами, а агент разбирается с DOM сам. Ниже — три рабочих кейса с кодом на библиотеке Browser Use: парсинг React-магазина, автозаполнение форм и мониторинг цен конкурентов с уведомлением в Telegram.
Браузерный агент нужен там, где данные подгружаются через JavaScript после загрузки страницы. Для статичного HTML хватает связки requests и BeautifulSoup — она быстрее и дешевле по токенам. Ниже три готовых кейса, критерий выбора между подходами и код, который можно скопировать и запустить.

Браузерный агент — это связка LLM и headless-браузера (обычно Playwright), где модель читает состояние страницы и сама решает действия. Классический парсер работает по жёстко заданным CSS-селекторам и ломается при любом изменении вёрстки.
Библиотека Browser Use — открытый Python-фреймворк, который к августу 2026 набрал около 108 000 звёзд на GitHub и возглавляет лидерборд Odysseys с результатом 87.4% на 200 длинных веб-задачах. Библиотека бесплатна по лицензии MIT, платить нужно только за токены LLM.
Обычный парсер видит только HTML, который отдаёт сервер. Если сайт дорисовывает цены и карточки товаров через React или Vue уже в браузере пользователя, requests получит пустую заготовку страницы.
Браузерный агент этой проблемы не знает — он открывает страницу в настоящем (пусть и headless) браузере, ждёт полной отрисовки и уже потом анализирует то, что реально видно глазами. Работает поверх Playwright, но добавляет слой рассуждений: не «найди элемент с классом .price», а «найди цену товара на странице».

Агент выигрывает там, где контент появляется только после выполнения JavaScript и логика навигации меняется от сайта к сайту. Для сайтов с готовым HTML в исходном коде классический парсер дешевле и быстрее.
Критерий простой: откройте «View Page Source» в браузере. Если нужных данных там нет, а появляются они только после подгрузки, значит сайт — SPA на React, Vue или Next.js, и без headless-браузера не обойтись.
Написать один универсальный скрипт под десяток разных интернет-магазинов физически не выйдет — у каждого своя вёрстка, свои классы, свои паттерны пагинации. Здесь и включается разница в подходах. requests + BeautifulSoup дешевле по ресурсам и быстрее в десятки раз, но требует ручной разборки кода каждого сайта и ломается при любом редизайне.
Browser Use дороже по токенам и медленнее, зато переживает изменения вёрстки без правок кода — за это отвечает функция self-healing, которую использует, например, Scraper Studio от Bright Data: скрейперу просто говорят, что он сломался, и он анализирует новую структуру сам.

Задача: собрать название, цену и наличие товаров с сайта, где контент подгружается динамически. Агент открывает страницу, дожидается рендера и извлекает данные в структурированном виде — JSON или pandas DataFrame.
На демонстрациях Scraper Studio для e-commerce агенту достаточно текстового запроса с перечислением нужных полей — название, цена, скидка, наличие бесплатной доставки, — чтобы он сам построил схему извлечения и код скрейпера.
Товары на витринах вроде React-магазинов почти всегда рендерятся через клиентский JavaScript: сервер отдаёт скелет страницы, а карточки с ценами прилетают отдельным запросом уже в браузере. Вот минимальный рабочий скрипт на Browser Use:
import asyncio
from browser_use import Agent
from browser_use.llm import ChatOpenAI
async def scrape_products():
agent = Agent(
task=(
"Зайди на https://example-shop.ru/catalog/noutbuki, "
"дождись загрузки карточек товаров и собери для каждого товара: "
"название, цену в рублях, наличие на складе. "
"Верни результат в виде списка JSON-объектов."
),
llm=ChatOpenAI(model="gpt-4o-mini"),
)
result = await agent.run()
print(result.final_result())
asyncio.run(scrape_products())Агент сам дождётся отрисовки списка, проскроллит страницу при ленивой подгрузке и вернёт структурированный ответ. Разница с классическим парсером: не нужно инспектировать DOM и подбирать селекторы под конкретный магазин — задача формулируется на человеческом языке.

Задача: заполнить одинаковую по структуре форму на нескольких похожих площадках без ручного копирования полей. Агент читает шаблон данных и подставляет значения в нужные поля сам.
Вместо жёстко прописанных page.fill(selector, value) для каждого поля агенту передают шаблон данных и описание формы — он сопоставляет их сам, даже если разметка формы на площадках отличается.Регистрация на нескольких похожих сервисах, подача заявок с одинаковым набором полей, повторяющиеся анкеты — рутина, которую жалко делать руками. Пример на Browser Use с шаблоном данных:
import asyncio
from browser_use import Agent
from browser_use.llm import ChatOpenAI
template = {
"name": "Иван Петров",
"email": "ivan@example.com",
"phone": "+7 900 000 00 00",
"company": "VibeCoderz",
}
async def fill_form(url: str):
agent = Agent(
task=(
f"Открой {url}, найди форму регистрации и заполни её данными: {template}. "
"Не отправляй форму, сделай скриншот перед сабмитом для проверки."
),
llm=ChatOpenAI(model="gpt-4o-mini"),
)
await agent.run()
urls = ["https://site-a.ru/register", "https://site-b.ru/apply"]
asyncio.run(asyncio.gather(*(fill_form(u) for u in urls)))Скриншот перед сабмитом — не декоративная деталь, а страховка: агент иногда путает похожие поля (например, «компания» и «должность»), и лучше поймать это до отправки, а не после.
Задача: периодически обходить список URL, сравнивать текущую цену с прошлым значением и слать уведомление при изменении. Комбинация браузерного агента и простого хранилища данных.
Для базового мониторинга цен достаточно SQLite и обычного requests-парсера, если сайт отдаёт цену в исходном HTML. Браузерный агент подключают точечно — только для тех конкурентов, чей сайт рендерит цену через JS.
Здесь удобно смешивать подходы: там, где HTML отдаёт цену сразу, используем requests и BeautifulSoup — быстрее и дешевле. Там, где нужен рендер, подключаем агента.
import asyncio
import sqlite3
from datetime import datetime
from browser_use import Agent
from browser_use.llm import ChatOpenAI
import requests
BOT_TOKEN = "your_telegram_bot_token"
CHAT_ID = "your_chat_id"
def notify(text: str):
requests.post(
f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage",
data={"chat_id": CHAT_ID, "text": text},
)
async def get_price_js_site(url: str) -> float:
agent = Agent(
task=f"Зайди на {url} и верни только текущую цену товара числом, без валюты.",
llm=ChatOpenAI(model="gpt-4o-mini"),
)
result = await agent.run()
return float(str(result.final_result()).replace("₽", "").strip())
def check_and_store(url: str, price: float):
conn = sqlite3.connect("prices.db")
cur = conn.cursor()
cur.execute("SELECT price FROM prices WHERE url=? ORDER BY id DESC LIMIT 1", (url,))
last = cur.fetchone()
if last and last[0] != price:
notify(f"Цена изменилась на {url}: {last[0]} → {price}")
cur.execute(
"INSERT INTO prices (url, price, created_at) VALUES (?, ?, ?)",
(url, price, datetime.now()),
)
conn.commit()
conn.close()
async def main():
urls = ["https://competitor.ru/product/123"]
for url in urls:
price = await get_price_js_site(url)
check_and_store(url, price)
asyncio.run(main())Для статичных сайтов замените get_price_js_site на обычный requests.get с BeautifulSoup — это быстрее и не тратит токены модели зря.

Выбор зависит от источника данных, а не от моды на AI. Если цена и наличие видны в исходном HTML — берите requests и BeautifulSoup. Если контент рисуется JavaScript — нужен headless-браузер, при сложной и переменчивой логике — полноценный агент.
На сайтах с готовым HTML классический парсер обрабатывает страницу за миллисекунды и не тратит ни одного токена LLM. Браузерный агент на той же задаче работает секундами и стоит денег за каждый вызов модели — переплата оправдана только там, где без него данных вообще не получить.
| Критерий | requests + BeautifulSoup | Browser Use агент |
|---|---|---|
| Данные в исходном HTML | Отлично подходит | Избыточно |
| Контент через JS/SPA | Не видит данные | Основной сценарий |
| Скорость на одну страницу | Миллисекунды | Секунды |
| Стоимость запуска | Только хостинг | Хостинг + токены LLM |
| Реакция на редизайн сайта | Ломается, нужна правка кода | Self-healing, часто адаптируется сам |
| Порог входа | Нужно разбирать DOM руками | Задача на естественном языке |
| Массовость (тысячи страниц) | Дёшево масштабируется | Дорого при большом объёме |

Помимо Browser Use, для сбора данных из интернета используют Firecrawl и Tavily для поиска и скрейпинга источников, а Scraper Studio от Bright Data — для генерации скрейперов по текстовому описанию с функцией самовосстановления.
Firecrawl возвращает исходный контент страниц целиком, что удобно для RAG-систем, а Tavily чаще отдаёт уже готовый ответ на вопрос, а не сырые данные — разница важна при выборе инструмента под конкретную задачу агента.
Есть три базовых пути получить данные из интернета для AI-приложения: поиск, скрейпинг и краулинг. Для поиска и построения долговременной памяти агента через векторную базу (например, Chroma DB или Superbase) обычно берут Firecrawl или Tavily и связку с n8n или LangChain. Для генерации скрейперов без единой строчки кода подходит Scraper Studio — вы описываете, что нужно вытащить со страницы, инструмент строит код, который вы можете открыть и доработать самостоятельно. Playwright при этом остаётся общим фундаментом почти для всех перечисленных решений — именно он реально «нажимает кнопки» в браузере.
Сама библиотека Browser Use бесплатна и распространяется по лицензии MIT. Платить приходится за токены LLM-провайдера, либо за облачный тариф, если не хочется держать инфраструктуру самому.
Облачный тариф Browser Use Dev стартует от $24 в месяц при годовой оплате, есть бесплатный тир на 10 задач в месяц. При self-hosted запуске через Ollama можно тестировать логику агента вообще без затрат на модель, прежде чем переходить на платный API.
| Вариант запуска | Стоимость | Когда подходит |
|---|---|---|
| Self-hosted + локальная модель (Ollama) | Бесплатно | Разработка, тестирование логики |
| Self-hosted + облачная LLM (OpenAI, Gemini) | Только токены | Продакшн с полным контролем |
| Browser Use Cloud, бесплатный тир | 10 задач/мес | Пилот, разовые задачи |
| Browser Use Cloud, Dev | от $24/мес (годовая оплата) | Регулярный мониторинг, малый масштаб |
Мы в VibeCoderz для похожих задач берём дешёвую модель на старте (Gemini Flash или мини-версии GPT) — токены на простое извлечение данных со страницы стоят копейки, дорогая модель нужна только для сложной многошаговой логики навигации.
Лиза: «Для одной ниши агент собрал 90 листов Excel, полтора миллиона ключей. Он реально собирает реальную частотность, находит запросы, до которых я бы вручную никогда не додумалась. На 30 минут можно отойти, он работает сам».

Браузерный агент закрывает конкретную нишу: динамические сайты и переменчивая логика навигации, где классический парсер требует постоянных правок. Для статичного HTML он избыточен — платите токенами за то, что requests сделает бесплатно и быстрее.
Разумная стратегия — не выбирать один инструмент раз и навсегда, а комбинировать: requests и BeautifulSoup там, где хватает, Browser Use там, где без него данных не получить. Посмотреть готовые обзоры инструментов можно в каталоге AI-инструментов VibeCoderz, а если нужен разбор конкретно под вашу задачу — запишитесь на консультацию к Максиму.
Подробный разбор самой библиотеки — в статье Browser Use: обзор библиотеки. Про сборку агентов без кода на n8n — в материале n8n и AI-агенты.

Нужно ли знать Python, чтобы собрать браузерного агента?
Базовый уровень нужен: понимать async/await и уметь запустить скрипт. Саму логику извлечения данных агент берёт на себя, вам не нужно разбирать DOM руками.
Можно ли обойти капчу браузерным агентом?
Технически некоторые платформы предлагают такие функции, но это серая зона с точки зрения условий использования сайтов. Начинайте с открытых источников и API, где это разрешено явно.
Чем Browser Use отличается от Playwright?
Playwright — низкоуровневый фреймворк автоматизации браузера, вы сами пишете селекторы и логику кликов. Browser Use работает поверх Playwright и добавляет слой LLM, который читает страницу и решает действия сам.
Сколько стоит один запуск агента на парсинг одной страницы?
Зависит от модели и сложности задачи, обычно от долей цента до нескольких центов на простое извлечение данных с одной страницы при использовании бюджетных моделей.
Можно ли использовать локальную модель без API-ключей?
Да, через Ollama можно подключить локальную модель и тестировать логику агента полностью бесплатно, прежде чем переходить на платный облачный API.
Что делать, если агент неправильно понял задачу на странице?
Переформулируйте запрос конкретнее: укажите точный URL, ожидаемый формат ответа и явно перечислите поля для извлечения — расплывчатые формулировки чаще всего и ломают результат.
Стоит ли использовать браузерного агента для тысяч страниц сразу?
На больших объёмах дешевле классический парсер там, где это возможно. Агента подключайте точечно — для доли сайтов со сложным JS-рендером внутри общего пайплайна.
Источники: Browser Use на GitHub, обзор AI-браузерных агентов Scrapfly, Browser Use Review — The AI Agent Index.
Обновлено: август 2026.