Скрапер подключается к живому Яндекс.Браузеру пользователя через Chrome DevTools Protocol.
Для Qrator выглядит как обычный пользователь — тот же браузер, те же куки, тот же TLS-отпечаток.
Яндекс.Браузер пользователя (--remote-debugging-port=9222)
↓ CDP (localhost:9222)
scraper.py
↓ открывает N вкладок в том же контексте
euroauto.ru страницы
↓
HTML сохраняется в кеш (~/SERVER/dataspace/cache/euroauto/)
↓
part_url извлекаются → scraped_parts_*.jsonl → up/ → сервер
Ключевое: браузер не перезапускается, вкладки пользователя не трогаются.
Скрапер открывает свои вкладки в фоне в том же контексте.
Закрой Яндекс.Браузер и открой с флагом:
/opt/yandex/browser/yandex-browser --remote-debugging-port=9222
Зайди на euroauto.ru — убедись что открывается нормально.
python3 ~/SERVER/dataspace/dl/scraper.py --test 5 --workers 2
Смотри в терминале: статус каждой страницы, сколько part URL найдено.
python3 ~/SERVER/dataspace/dl/scraper.py --workers 5 --delay 2
python3 ~/SERVER/dataspace/dl/scraper.py --workers 5 --resume
| Параметр | По умолчанию | Описание |
|---|---|---|
--workers N |
3 | Параллельных вкладок |
--delay N |
2.0 | Секунд между запросами на воркер |
--resume |
— | Продолжить с последней позиции |
--no-cache |
— | Не сохранять HTML на диск |
--test N |
— | Скрапить только первые N URL |
Рекомендуемые workers:
- --workers 3 — безопасно, 3 × 2с = ~6 500 запросов/час
- --workers 5 — быстро, 5 × 2с = ~9 000 запросов/час
- --workers 10 — максимум, рискованно если Qrator считает запросы по сессии
Каждая страница сохраняется как HTML-файл:
~/SERVER/dataspace/cache/euroauto/
├── ab/
│ └── abcd1234...html ← HTML страницы
├── cd/
│ └── cdef5678...html
└── ...
Имя файла = MD5 от URL. Если файл уже есть — страница не запрашивается повторно.
Зачем:
- Переразбор данных без повторного скрапинга
- Анализ структуры страниц
- Отладка парсера
Объём: ~100KB × 11 632 страниц ≈ 1.1 GB
Перенастроить путь кеша: в scraper.py изменить CACHE_DIR:
CACHE_DIR = Path("/другой/путь/euroauto")
| Файл | Где | Что |
|---|---|---|
scraped_parts_TIMESTAMP.jsonl |
up/ |
part URL + источник (JSONL) |
scraper_progress.txt |
up/ |
Прогресс: done=1234 |
cache/euroauto/**/*.html |
cache/ |
HTML-кеш страниц |
Формат JSONL:
{"part_url": "/part/new/12345/", "source": "https://spb.euroauto.ru/catalog/..."}
Файл scraped_parts_*.jsonl попадает в up/ → через коннектор rsync-ится на сервер → обрабатывается:
# На сервере: смотрим что набрали
wc -l /mnt/beget-s3/up/scraped_parts_*.jsonl
# Склейка и дедупликация
python3 /opt/claude-workspace/projects/org/@biz-lideravto/it/scripts/merge_scraped.py
Ошибка "нет подключения к браузеру":
curl http://localhost:9222/json/version # проверить порт
→ Перезапусти браузер с --remote-debugging-port=9222
Qrator блокирует (HTML < 3000 байт):
- Уменьши workers: --workers 2
- Увеличь delay: --delay 5
- Перезайди на euroauto.ru в браузере вручную
Продолжить после сбоя:
python3 scraper.py --resume
Кеш сохранён — уже скачанные страницы не будут запрашиваться повторно.
infra/@kt-scraper.pc/
├── README.md ← этот файл
└── scraper.py ← скрапер
Актуальная копия для ПК всегда в dl/ (кладётся через коннектор):
~/SERVER/dataspace/dl/scraper.py