2.0 KiB
2.0 KiB
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_productouscrape_all.
Étapes de scraping
-
Initialiser le navigateur
- Chromium, locale
fr-FR, timezoneEurope/Paris, viewport réaliste. user-agentdéfini dans la config.
- Chromium, locale
-
Charger la page produit
- Délai aléatoire 1–3s entre requêtes.
- Timeout contrôlé.
-
Détecter blocage/captcha
- Si captcha / robot-check :
- Marquer
scrape_status = blocked. - Sauvegarder
screenshot+page.content()dansbackend/data/screenshots. - Log détaillé + retour sans crash.
- Marquer
- Si captcha / robot-check :
-
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".
- Priorité aux IDs stables (ex:
-
Normaliser les valeurs
- Prix :
"249,99 €"→249.99. - Notes :
"4,7 sur 5"→4.7. - Stock :
in_stockbooléen + texte brut.
- Prix :
-
Sauvegarder le snapshot
- Insérer un enregistrement
product_snapshots. - Écrire un JSON raw dans
backend/data/raw/YYYY-MM/....
- Insérer un enregistrement
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.