Files
scrap/pricewatch/app/stores/cdiscount/selectors.yml
2026-01-13 19:49:04 +01:00

84 lines
2.5 KiB
YAML
Executable File

# 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)