# Portability: UNIVERSAL
# Last validated: 2026-05-17
# Next review: 2027-05-17

WEB_SCRAPE HANDLER
------------------

ИМЯ ОБРАБОТЧИКА
------------

web-scrape (WebScrapeHandler)

Замена для Playwright MCP. Обеспечивает контроль браузера над HTTP-запросами и
Извлечение данных на основе регулярных выражений. Необязательно: Selenium для снимков экрана.


ОПИСАНИЕ
------------

Обработчик web_scrape позволяет выполнять очистку веб-страниц, анализ HTML и
Захват скриншота. Работает через интерфейс командной строки BACH с надежным
Обработчики ошибок. Сохраняет снимки экрана в каталоге кэша.

Зависимости:
  - запросы (обязательные, HTTP-запросы)
  - селен (необязательно, скриншоты)
  - Chrome/Chromium (необязательно, скриншот WebDriver)


ОПЕРАЦИИ
-----------

получить <url>
  HTTP GET: загрузка и отображение полного тела HTML.
  Усекается при >5000 символов. Показывает статус, тип контента, размер.

left <url>
  Извлечение ссылок: все <a href> с текстом ссылки. Очищает HTML-теги,
  игнорирует javascript:, mailto:, якорь (#). Макс. 50 ссылок. Дедуплицировано.

forms <url>
  Распознавание формы: <form> с действием/методом, все <input>, <textarea>,
  <выбрать>. Показывает типы полей (текст, отправка и т. д.) и имена.

скриншот <url>
  Скриншот с Selenium (без головы, 1280х1024). Сохраняется в
  data/cache/scrape/ с именем файла на основе хеша. Требуется драйвер Chrome.

headers <url>
  Показать заголовки ответа: все HTTP-заголовки ответа + код состояния.


ПРИМЕРЫ
---------

bach web-scrape get https://example.com
  Получите контент с сайта example.com

bach web-scrape links https://github.com/lukisch
  Перечислить все ссылки в профиле GitHub

bach web-scrape forms https://example.com/login
  Анализ форм на странице входа

bach web-scrape screenshot https://example.com
  Создать скриншот PNG (требуется селен)

bach web-scrape headers https://example.com
  Проверьте заголовки HTTP (пользовательский агент, файлы cookie и т. д.)


ФАЙЛЫ
-------

hub/web_scrape.py Реализация обработчика
data/cache/scrape/ Вывод скриншота


СМОТРИ ТАКЖЕ
----------

hub/base.py Класс BaseHandler
