187 lines
4.1 KiB
Markdown
Executable File
187 lines
4.1 KiB
Markdown
Executable File
# 🚀 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)
|