4.1 KiB
Executable File
4.1 KiB
Executable File
🚀 PriceWatch - Démarrage rapide
Installation
# 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
pricewatch doctor
2. Détecter un store depuis une URL
# 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
# 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
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
# 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
# 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
# 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 :
{
"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
# 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
- Ajouter des fixtures HTML pour tester les parsers sans faire de requêtes
- Écrire des tests pytest pour valider le fonctionnement
- Ajouter d'autres stores (Fnac, Darty, etc.)
- Mettre en place une base de données pour historiser les prix
- 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)