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

80 lines
2.5 KiB
YAML
Executable File

# Sélecteurs CSS/XPath pour AliExpress.com
# Mis à jour le 2026-01-13 après analyse du HTML réel
# ⚠️ IMPORTANT: AliExpress utilise un rendu client-side (SPA React/Vue)
# - HTTP fonctionne mais retourne un HTML minimal (75KB)
# - Playwright OBLIGATOIRE pour obtenir le contenu rendu
# - Attendre le sélecteur '.product-title' ou ajouter un délai (~3s)
# - Les données sont chargées dynamiquement via AJAX
# ⚠️ Extraction prioritaire:
# 1. Titre: h1 ou meta[property="og:title"]
# 2. Prix: Regex dans le HTML (aucun sélecteur stable)
# 3. Images: window._d_c_.DCData.imagePathList (JSON embarqué)
# 4. SKU: Depuis l'URL /item/{ID}.html
# Titre du produit
# Le h1 apparaît après chargement AJAX
title:
- "h1"
- "meta[property='og:title']" # Fallback dans meta tags
# Prix principal
# ⚠️ AUCUN SÉLECTEUR STABLE - Utiliser regex sur le HTML
# Pattern: ([0-9]+[.,][0-9]{2})\s*€ ou €\s*([0-9]+[.,][0-9]{2})
price:
- "span[class*='price']"
- "div[class*='price']"
- "span.product-price"
# Ces sélecteurs ne fonctionnent PAS - prix extrait par regex
# Devise
# Toujours EUR pour fr.aliexpress.com
currency:
- "meta[property='og:price:currency']"
# Fallback: détecter depuis l'URL (fr = EUR)
# Images produit
# ⚠️ Les images sont dans window._d_c_.DCData.imagePathList
# Format: https://ae01.alicdn.com/kf/{hash}.jpg
images:
- "img[alt]"
# Extraction depuis DCData JSON plus fiable
# Catégorie / breadcrumb
category:
- "nav[aria-label='breadcrumb'] a"
- ".breadcrumb a"
# Caractéristiques techniques
# Peuvent être dans des onglets ou sections dépliables
specs_table:
- "div[class*='specification']"
- "div[class*='properties']"
- "dl"
# SKU / référence produit
# Extraction depuis l'URL plus fiable
# URL pattern: /item/{ID}.html
# SKU = ID (10 chiffres)
sku:
- "meta[property='product:retailer_item_id']"
- "span[data-spm-anchor-id]"
# Stock / Disponibilité
stock_status:
- "button[class*='add-to-cart']"
- "button[class*='addtocart']"
- "div[class*='availability']"
# Notes importantes:
# 1. ⚠️ Playwright OBLIGATOIRE avec wait - HTML minimal sinon
# 2. Attendre le sélecteur '.product-title' avant de parser
# 3. Prix: REGEX obligatoire - aucun sélecteur CSS stable
# 4. Images: Extraire depuis window._d_c_.DCData (JSON)
# 5. SKU: Extraire depuis URL /item/{ID}.html → ID = SKU
# 6. Devise: EUR pour France (fr.aliexpress.com)
# 7. Classes CSS générées aléatoirement (hachées) - TRÈS INSTABLES
# 8. Pas de JSON-LD schema.org disponible
# 9. Temps de chargement: ~3-5s avec Playwright + wait