1er
This commit is contained in:
53
docs/scrap.md
Normal file
53
docs/scrap.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# 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 1–3s 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.
|
||||
Reference in New Issue
Block a user