| name | harvest-usage |
| description | Практическое использование Harvest для веб-скрейпинга: scrape, extract, crawl. Конкретные команды и примеры из жизни. |
| tags | ["harvest","scraping","web","extraction","russia"] |
Harvest Usage — Практическое использование
Активировать: когда нужно собрать данные с веб-страницы.
Цель: Получить данные с сайта за 3 команды, без написания кода.
Зачем
Веб-скрейпинг — это боль. Playwright тормозит, BeautifulSoup ломается на динамических страницах, anti-bot блокирует. Harvest решает все эти проблемы одной командой.
Установка
pip install harvest-agent
Проверь:
harvest --version
Основные команды
1. harvest scrape — Полное содержимое страницы
harvest scrape --mode full --output txt "https://example.com"
harvest scrape --selector ".price, .product-title" "https://example.com/pricing"
harvest scrape --mode economy --output json "https://example.com"
Режимы:
full — безопасно, весь контент (по умолчанию)
economy — экономит токены, только основное
hybrid — оба варианта
auto — умное определение
Формат вывода:
txt — простой текст (для LLM)
json — структурированные данные
md — Markdown
csv — таблица
2. harvest extract — Извлечение конкретных полей
harvest extract --schema '{"price":".price", "title":"h1", "image":"img.product-photo"}' "https://example.com/product"
harvest extract --schema file://schema.json "https://example.com"
Возвращает JSON:
{
"price": "$99.99",
"title": "Product Name",
"image": "https://example.com/photo.jpg"
}
Если элемент не найден — null.
3. harvest crawl — Глубокий обход сайта
harvest crawl https://example.com
harvest crawl https://example.com --screenshot shot.png
harvest crawl https://example.com --vision
harvest crawl https://example.com --mode hybrid-vision
4. harvest batch — Пакетная обработка
harvest batch urls.txt --output results.json
5. harvest compliance — Проверка robots.txt
harvest compliance https://example.com
harvest compliance https://example.com --format json
Практические примеры
Пример 1: Собрать цены с Wildberries
harvest scrape --selector ".product-card__price" --output json "https://www.wildberries.ru/catalog/12345/detail.aspx"
Пример 2: Сравнить цены на Ozon
harvest extract --schema '{"name":".product-title", "price":".price-current", "rating":".rating-value"}' "https://www.ozon.ru/product/12345/"
Пример 3: Собрать новости с Habr
harvest scrape --selector ".tm-title__link" --output txt "https://habr.com/ru/news/"
Пример 4: Проверить доступность API
harvest compliance https://api.example.com
Правила
- ВСЕГДА используй
--mode full --output txt для чтения контента
- ВСЕГДА проверяй
harvest compliance перед массовым скрейпингом
- НИКОГДА не используй Harvest для API-вызовов (curl/httpx лучше)
- НИКОГДА не превышай rate limiting — 10 запросов/мин на домен
- Если что-то сломалось — попробуй
--mode economy или другой селектор
Частые ошибки
| Ошибка | Решение |
|---|
--css не работает | Используй --selector для scrape, --schema для extract |
| Пустой вывод | Попробуй другой CSS-селектор или --mode full |
| Anti-bot блокирует | Harvest уже имеет anti-bot, ноบาง sites могут блокировать |
| Нет JSON | Добавь --output json |
Продвинутое
Через Python (программно)
import asyncio
from harvest import Scraper
async def main():
scraper = Scraper()
result = await scraper.scrape("https://example.com", mode="full", output="txt")
print(result)
asyncio.run(main())
Через MCP (для Hermes Agent)
harvest mcp serve
Hermes автоматически подключит Harvest как инструмент.