# Sélecteurs CSS/XPath pour Cdiscount # Mis à jour le 2026-01-13 après analyse du HTML réel # ⚠️ IMPORTANT: Cdiscount utilise une protection anti-bot forte # - HTTP simple ne fonctionne PAS (retourne une page de protection JavaScript) # - Playwright est OBLIGATOIRE pour récupérer le vrai contenu # - Les classes CSS sont générées dynamiquement et peuvent changer # Titre du produit # Utiliser data-e2e car plus stable que les classes CSS title: - "h1[data-e2e='title']" - "h1" # Fallback: premier h1 # Prix principal # Les classes CSS sont instables (sc-83lijy-0, kwssIa, etc.) # Meilleure approche: extraire par regex depuis le texte # Pattern: (\d+[,\.]\d+)\s*€ price: - "div[data-e2e='price']" # Nouveau layout (2026) - "div[class*='SecondaryPrice-price']" - "div[class*='price']" - ".fpPrice" # Prix de comparaison (prix barré) price_compare: - "div[class*='SecondaryPrice-wrapper']" # Devise # Toujours EUR pour Cdiscount France currency: - "meta[itemprop='priceCurrency']" # Fallback: statique EUR # Frais de port shipping_cost: - ".fpDeliveryInfo" - "div[class*='delivery']" # Statut de stock # Non trouvé dans l'analyse HTML - peut être dynamique stock_status: - "link[itemprop='availability']" - "div[class*='availability']" - ".fpAvailability" # Images produit # Filtrer par attribut alt contenant le titre images: - "img[alt]" # Toutes les images avec alt # URL format: https://www.cdiscount.com/pdt2/0/0/4/X/700x700/SKU/rw/... # Catégorie / breadcrumb # Pas trouvé dans le HTML analysé # Extraire depuis l'URL: /informatique/ordinateurs-pc-portables/... category: - ".breadcrumb" - "nav[class*='breadcrumb']" # Caractéristiques techniques # Non trouvées dans l'analyse - peuvent être dans des onglets cachés specs_table: - "table[class*='characteristic']" - ".fpCharacteristics" - "div[class*='specs']" # SKU / référence produit # Extraction depuis l'URL plus fiable que le HTML # URL pattern: /f-10709-tuf608umrv004.html # Regex: /f-(\d+)-([a-z0-9]+)\.html # SKU = groupe 2 sku: - "span[itemprop='sku']" - "meta[itemprop='productID']" # Notes importantes: # 1. ⚠️ Playwright OBLIGATOIRE - HTTP ne fonctionne pas # 2. Classes CSS instables - utiliser data-e2e quand disponible # 3. Prix: parser par regex (\d+[,\.]\d+)\s*€ plutôt que CSS # 4. SKU: extraire depuis URL /f-\d+-([a-z0-9]+)\.html # 5. Catégorie: extraire depuis URL path /categorie1/categorie2/ # 6. Images: filtrer celles avec alt contenant le titre produit # 7. Devise: toujours EUR pour France (static fallback OK)