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

2.0 KiB
Raw Blame History

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.