# 🚀 PriceWatch - Démarrage rapide ## Installation ```bash # Activer l'environnement virtuel source venv/bin/activate # Installer les navigateurs Playwright (pour anti-bot) playwright install chromium ``` ## Commandes essentielles ### 1. Vérifier l'installation ```bash pricewatch doctor ``` ### 2. Détecter un store depuis une URL ```bash # Amazon pricewatch detect "https://www.amazon.fr/dp/B08N5WRWNW" # Cdiscount pricewatch detect "https://www.cdiscount.com/informatique/exemple/f-123-exemple.html" ``` ### 3. Tester la récupération d'une page ```bash # Via HTTP (rapide) pricewatch fetch "https://www.amazon.fr/" --http # Via Playwright (anti-bot) pricewatch fetch "https://www.amazon.fr/" --playwright # Mode visible (voir le navigateur) pricewatch fetch "https://www.amazon.fr/" --playwright --headful ``` ### 4. Pipeline complet : YAML → JSON **Étape 1** : Éditer `scrap_url.yaml` avec de vraies URLs ```yaml urls: - "https://www.amazon.fr/dp/VOTRE_ASIN" - "https://www.cdiscount.com/votre/url/f-123-sku.html" options: use_playwright: true headful: false save_html: true save_screenshot: true timeout_ms: 60000 ``` **Étape 2** : Lancer le scraping ```bash # Mode normal pricewatch run --yaml scrap_url.yaml --out scraped_store.json # Mode debug (logs détaillés) pricewatch run --yaml scrap_url.yaml --out scraped_store.json --debug ``` **Étape 3** : Consulter les résultats ```bash # Voir le JSON de sortie cat scraped_store.json | python -m json.tool # Voir les HTML sauvegardés (si save_html: true) ls -lh scraped/ # Voir les screenshots (si save_screenshot: true) ls -lh scraped/*.png ``` ### 5. Parser un fichier HTML local ```bash # Utile pour tester les sélecteurs pricewatch parse amazon --in scraped/amazon_B08N5WRWNW.html pricewatch parse cdiscount --in scraped/cdiscount_123-sku.html ``` ## Structure des résultats JSON Chaque produit scraped contient : ```json { "source": "amazon", "url": "https://www.amazon.fr/dp/B08N5WRWNW", "fetched_at": "2026-01-13T11:30:00Z", "title": "Nom du produit", "price": 299.99, "currency": "EUR", "shipping_cost": null, "stock_status": "in_stock", "reference": "B08N5WRWNW", "category": "Électronique", "images": [ "https://example.com/image1.jpg" ], "specs": { "Marque": "Example", "Couleur": "Noir" }, "debug": { "method": "http", "status": "success", "errors": [], "notes": ["Récupération réussie"], "duration_ms": 1250, "html_size_bytes": 145000 } } ``` ## Gestion des erreurs ### Erreur 403 (Anti-bot) Le système bascule automatiquement sur Playwright si HTTP échoue avec `use_playwright: true`. ### Captcha détecté Le snapshot contiendra `debug.status: "failed"` avec l'erreur dans `debug.errors`. ### Timeout Ajustez `timeout_ms` dans le YAML (par défaut 60000 = 1 minute). ### Parsing incomplet Si le titre ou le prix manque, `debug.status: "partial"` avec les champs disponibles. ## Logs détaillés ```bash # Mode debug pour voir tous les détails pricewatch run --debug # Les logs incluent : # - Détection du store avec score # - Méthode de récupération (HTTP/Playwright) # - Durée de chaque opération # - Taille du HTML récupéré # - Statut du parsing # - Erreurs rencontrées ``` ## Exemples de URLs testables ### Amazon.fr ``` https://www.amazon.fr/dp/B08N5WRWNW https://www.amazon.fr/gp/product/B08N5WRWNW ``` ### Cdiscount.com ``` https://www.cdiscount.com/informatique/r-clavier.html ``` **⚠️ Important** : Respectez les conditions d'utilisation et les robots.txt des sites. ## Prochaines étapes 1. **Ajouter des fixtures HTML** pour tester les parsers sans faire de requêtes 2. **Écrire des tests pytest** pour valider le fonctionnement 3. **Ajouter d'autres stores** (Fnac, Darty, etc.) 4. **Mettre en place une base de données** pour historiser les prix 5. **Créer un worker** pour automatiser le scraping quotidien ## Support - Documentation : `README.md` - Architecture : `CLAUDE.md` - TODO : `TODO.md` - Changelog : `CHANGELOG.md` --- **Version** : 0.1.0 **Date** : 2026-01-13 **Statut** : ✅ Opérationnel (Phase 1 complétée)