chore: sync project files
This commit is contained in:
186
QUICKSTART.md
Executable file
186
QUICKSTART.md
Executable file
@@ -0,0 +1,186 @@
|
||||
# 🚀 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)
|
||||
Reference in New Issue
Block a user