Введение
Современные AI-агенты, такие как GPT-4 с инструментами, Claude или специализированные поисковые боты, сталкиваются с проблемой: интернет — это не только статичный HTML, но и динамический JavaScript. Обычные методы поиска (web_search) выдают сырую текстовую выдачу, но не могут «увидеть» контент, подгружаемый скриптами. Здесь на помощь приходит Playwright — инструмент для автоматизации браузера, который умеет работать с headless-браузером. В этой статье мы разберем, как AI-агент комбинирует web_search и Playwright для полноценного парсинга данных.
Как работает web_search в AI-агентах?
Поиск в интернете для AI обычно реализуется через API поисковых систем (Google, Bing) или через открытые библиотеки. Алгоритм прост:
- Агент отправляет запрос к поисковой системе.
- Получает список URL и сниппетов (кратких описаний).
- Извлекает текст с найденных страниц (часто через HTTP-запросы).
Проблема: Многие современные сайты (например, интернет-магазины, портфолио, веб-приложения) загружают контент через JavaScript. Без выполнения скриптов HTML-код пуст или содержит только скелет страницы. Обычный HTTP-клиент (через requests или fetch) не может получить реальный контент.
Playwright: headless-браузер для парсинга
Playwright — это библиотека для управления браузерами (Chromium, Firefox, WebKit) в автоматическом режиме. Она позволяет:
- Загружать страницу с полным рендерингом JavaScript.
- Кликать по кнопкам, заполнять формы, скроллить.
- Ждать появления динамических элементов.
- Извлекать DOM-дерево после всех асинхронных загрузок.
Пример кода на Python:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto('https://example.com/dynamic-site')
# Ждем загрузки контента
page.wait_for_selector('.product-title')
text = page.inner_text('.product-title')
print(text)
browser.close()
Этот код открывает headless-браузер, загружает страницу, дожидается появления элемента с классом product-title и извлекает его текст. Без Playwright вы бы получили пустую строку.
Комбинированный подход: web_search + Playwright
Эффективный AI-агент должен сначала найти релевантные страницы (через web_search), а затем спарсить их содержимое с помощью Playwright. Алгоритм:
- Поиск: Агент отправляет запрос (например, «купить ноутбук ASUS цена 2025»).
- Анализ выдачи: Из сниппетов выбираются наиболее подходящие URL.
- Парсинг: Для каждого URL запускается headless-браузер Playwright.
- Извлечение данных: Агент парсит цены, характеристики, отзывы.
- Агрегация: Результаты сводятся в таблицу или отчет.
Пример архитектуры:
AI-агент
|
├── web_search (API Google)
| → список URL
|
└── Playwright (headless Chrome)
→ загрузка JS-сайта
→ извлечение данных
Практический пример: парсинг интернет-магазина
Допустим, AI-агент должен собрать цены на iPhone 15 с сайта, который использует React. Обычный requests.get() вернет только пустой div с id="root". Playwright же выполнит скрипты и отобразит товары.
Код для извлечения цен:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto('https://shop.example.com/iphone')
page.wait_for_selector('.price')
prices = page.locator('.price').all_inner_texts()
print(prices) # ['$899', '$1099', ...]
browser.close()
Преимущества и ограничения
Плюсы:
- Доступ к динамическому контенту.
- Возможность взаимодействия (кнопки, бесконечная прокрутка).
- Единый интерфейс для разных браузеров.
Минусы:
- Потребляет больше ресурсов (память, CPU).
- Медленнее, чем HTTP-запросы (из-за запуска браузера).
- Сайты могут блокировать headless-браузеры (через детекцию User-Agent или WebDriver).
Заключение
AI-агенты, которые ограничиваются только web_search, видят лишь верхушку айсберга. Для полноценного сбора данных с современных сайтов необходимо использовать Playwright или аналоги (Puppeteer, Selenium). Комбинация поиска и headless-браузера открывает доступ к контенту, скрытому за JavaScript. Если вы разрабатываете AI-бота для аналитики рынка, мониторинга цен или сбора контента — внедрение Playwright станет ключевым шагом.
Хотите глубже изучить тему? Подпишитесь на наш блог или напишите в комментариях — мы подготовим серию статей по созданию AI-агентов с нуля!
Комментарии