Files
scrap/QUICKSTART.md
2026-01-13 19:49:04 +01:00

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)