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