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

73 lines
2.2 KiB
YAML
Executable File

# Sélecteurs CSS/XPath pour Backmarket.fr
# Mis à jour le 2026-01-13 après analyse du HTML réel
# ⚠️ IMPORTANT: Backmarket utilise une protection anti-bot
# - HTTP simple ne fonctionne PAS (retourne 403 Forbidden)
# - Playwright est OBLIGATOIRE pour récupérer le contenu
# - Les classes CSS sont relativement stables (heading-1, etc.)
# Titre du produit
# Classes simples et stables
title:
- "h1.heading-1"
- "h1" # Fallback
# Prix principal
# ✓ JSON-LD schema.org disponible (prioritaire)
# Les prix sont dans <script type="application/ld+json">
price:
- "div[data-test='price']" # Fallback si JSON-LD n'est pas disponible
- "span[class*='price']"
# Devise
# Toujours EUR pour Backmarket France
currency:
- "meta[property='og:price:currency']"
# Fallback: statique EUR
# État / Condition (spécifique aux produits reconditionnés)
# Backmarket vend du reconditionné, donc il y a des grades (Correct, Bon, Excellent, etc.)
condition:
- "button[data-test='condition-button']"
- "div[class*='condition']"
- "span[class*='grade']"
# Images produit
images:
- "img[alt]" # Toutes les images avec alt
# Filtrer celles qui contiennent le nom du produit
# Catégorie / breadcrumb
category:
- "nav[aria-label='breadcrumb'] a"
- ".breadcrumb a"
# Caractéristiques techniques
# Peuvent être dans des sections dépliables
specs_table:
- "div[class*='specification']"
- "div[class*='technical']"
- "dl"
# SKU / référence produit
# Extraction depuis l'URL plus fiable
# URL pattern: /fr-fr/p/{slug}
# SKU = slug
sku:
- "meta[property='product:retailer_item_id']"
- "span[data-test='sku']"
# Stock / Disponibilité
stock_status:
- "button[data-test='add-to-cart']" # Si présent = en stock
- "div[class*='availability']"
# Notes importantes:
# 1. ⚠️ Playwright OBLIGATOIRE - HTTP retourne 403 Forbidden
# 2. JSON-LD schema.org disponible → prioritaire pour prix/titre
# 3. Classes CSS relativement stables (heading-1, etc.)
# 4. SKU: extraire depuis URL /fr-fr/p/{slug}
# 5. Condition (grade) important pour Backmarket (Correct/Bon/Excellent)
# 6. Prix varie selon la condition choisie
# 7. Devise: toujours EUR pour France (static fallback OK)