diff --git a/.env.example b/.env.example index a63c2d6..5b0cd8a 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ -IAAI_HEADLESS=false +IAAI_HEADLESS=true IAAI_RAW_OUTPUT_JSON=iaai_raw_network.json IAAI_LOG_LEVEL=INFO # IAAI_LOG_FILE=iaai_scraper.log @@ -13,11 +13,11 @@ IAAI_POST_OPEN_IDLE_MS=3500 # Sequential listing-first mode. IAAI_CARS_LISTING_URL=https://www.iaai.com/Vehiclelisting/Cars -IAAI_MAX_PAGES_PER_RUN=1 -IAAI_MAX_VEHICLES_PER_RUN=10 -IAAI_PAGE_LINK_LIMIT=20 -IAAI_INCLUDE_PAGINATION=false -IAAI_COLLECT_CURRENT_PAGE_ONLY=true +IAAI_MAX_PAGES_PER_RUN=10 +IAAI_MAX_VEHICLES_PER_RUN=30 +IAAI_PAGE_LINK_LIMIT=100 +IAAI_INCLUDE_PAGINATION=true +IAAI_COLLECT_CURRENT_PAGE_ONLY=false # Human-like pacing. IAAI_HUMAN_PACE_ENABLED=true @@ -25,15 +25,30 @@ IAAI_AFTER_LISTING_OPEN_MIN_S=2.5 IAAI_AFTER_LISTING_OPEN_MAX_S=4.5 IAAI_AFTER_FILTER_ACTION_MIN_S=2.0 IAAI_AFTER_FILTER_ACTION_MAX_S=4.0 -IAAI_BEFORE_VEHICLE_OPEN_MIN_S=2.5 -IAAI_BEFORE_VEHICLE_OPEN_MAX_S=5.5 -IAAI_AFTER_VEHICLE_OPEN_MIN_S=5.0 -IAAI_AFTER_VEHICLE_OPEN_MAX_S=9.0 -IAAI_BETWEEN_VEHICLES_MIN_S=8.0 -IAAI_BETWEEN_VEHICLES_MAX_S=18.0 +IAAI_BEFORE_VEHICLE_OPEN_MIN_S=1.5 +IAAI_BEFORE_VEHICLE_OPEN_MAX_S=3.0 +IAAI_AFTER_VEHICLE_OPEN_MIN_S=1.0 +IAAI_AFTER_VEHICLE_OPEN_MAX_S=2.5 +IAAI_BETWEEN_VEHICLES_MIN_S=2.0 +IAAI_BETWEEN_VEHICLES_MAX_S=4.0 IAAI_AFTER_PAGE_CHANGE_MIN_S=3.0 IAAI_AFTER_PAGE_CHANGE_MAX_S=6.0 +# Scheduler (default once per hour) +IAAI_SCHEDULER_INTERVAL_MINUTES=60 + +# Retry / backoff +IAAI_RETRY_DELAY_SECONDS=2.5 +IAAI_RETRY_BACKOFF_MULTIPLIER=2.0 +IAAI_RETRY_JITTER_SECONDS=0.25 + +# Proxy (HTTP/HTTPS preferred for Playwright) +# Chromium does not support SOCKS5 proxy authentication directly. +# Use residential or mobile USA proxy. +# IAAI_PROXY_SERVER=http://proxy.example.com:8080 +# IAAI_PROXY_USERNAME= +# IAAI_PROXY_PASSWORD= + # Database. IAAI_DATABASE_URL=sqlite:///iaai_scraper.db IAAI_DATABASE_ECHO=false diff --git a/Dockerfile b/Dockerfile index 44d0f92..e81a9ab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,5 +9,7 @@ COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY . . +RUN chmod +x entrypoint.sh +ENTRYPOINT ["./entrypoint.sh"] CMD ["python", "main.py", "--help"] diff --git a/README.md b/README.md index fc06fcc..36b5d12 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ Скрапер публичного листинга автомобилей с сайта IAAI. Собирает данные карточек через Playwright, парсит HTML и перехваченные JSON ответы, -нормализует и сохраняет в SQLite (или другую БД через SQLAlchemy). +нормализует и сохраняет в PostgreSQL или SQLite через SQLAlchemy. -Работает последовательно одна машина за раз, с паузами между запросами. +По умолчанию работает последовательно одна машина за раз, с паузами между запросами. ## Что делает @@ -12,7 +12,8 @@ 2. Переходит на каждую карточку, перехватывает XHR/fetch JSON-ответы. 3. Парсит DOM-текст, `