Files
suivi_produit/docs/scrap.md
2026-01-18 12:23:01 +01:00

54 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Procédure de scraping Amazon.fr
## Objectif
- Extraire les champs requis (prix, stock, note, badges, image) sans casser le pipeline si un champ manque.
- Produire un snapshot propre + artefacts de debug si blocage.
## Pré-requis
- Playwright installé (Chromium).
- Config lue depuis `backend/config_backend.json`.
- Lancement via `scrape_product` ou `scrape_all`.
## Étapes de scraping
1. **Initialiser le navigateur**
- Chromium, locale `fr-FR`, timezone `Europe/Paris`, viewport réaliste.
- `user-agent` défini dans la config.
2. **Charger la page produit**
- Délai aléatoire 13s entre requêtes.
- Timeout contrôlé.
3. **Détecter blocage/captcha**
- Si captcha / robot-check :
- Marquer `scrape_status = blocked`.
- Sauvegarder `screenshot` + `page.content()` dans `backend/data/screenshots`.
- Log détaillé + retour sans crash.
4. **Extraire les champs**
- Priorité aux IDs stables (ex: `#productTitle`, `#acrCustomerReviewText`, `#availability`).
- Prix : gérer variantes (prix fractionné, promo).
- Champs optionnels : si absent → `null` + log "missing field".
5. **Normaliser les valeurs**
- Prix : `"249,99 €"``249.99`.
- Notes : `"4,7 sur 5"``4.7`.
- Stock : `in_stock` booléen + texte brut.
6. **Sauvegarder le snapshot**
- Insérer un enregistrement `product_snapshots`.
- Écrire un JSON raw dans `backend/data/raw/YYYY-MM/...`.
## Logs & erreurs
- Chaque scrap doit tracer : start, fields manquants, status, fin.
- Échec contrôlé si un champ est absent (jamais de crash global).
## Champs obligatoires
- `url`, `asin`, `title`, `image_main_url`, `price_current`, `stock_status`, `rating_value`, `rating_count`.
## Champs optionnels
- `price_list`, `discount_percent`, `lowest_30d_price`, `amazon_choice`, `limited_time_deal`, `prime_eligible`, `amazon_exclusive`.
## Notes
- Pas de calcul inventé (pas de réduction sans source).
- Stratégie captcha par défaut : abandon + log + retry plus tard.