chore: sync project files
This commit is contained in:
83
pricewatch/app/stores/cdiscount/selectors.yml
Executable file
83
pricewatch/app/stores/cdiscount/selectors.yml
Executable file
@@ -0,0 +1,83 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user