Outil CLI en Go pour rechercher des produits sur rexel.fr par référence ou désignation et récupérer leurs informations (URL, photo, marque, etc.).
- Go 1.21+
- Chrome/Chromium (optionnel, uniquement pour le fallback navigateur headless)
go build -o rexel-scraper .Le scraper utilise une stratégie double :
- API directe (primaire) — Requêtes HTTP vers l'API REST Rexel. Rapide (~1s par requête), pas besoin de navigateur.
- Navigateur headless (fallback) — Via chromedp, si l'API ne retourne aucun résultat. Nécessite Chrome/Chromium installé.
Recherche un produit par référence fabricant, référence Rexel ou désignation.
rexel-scraper search [options] <requête>
| Flag | Type | Défaut | Description |
|---|---|---|---|
--limit |
int | 5 |
Nombre maximum de résultats retournés |
--output |
string | (vide) | Fichier de sortie. Format déterminé par l'extension : .json pour JSON, .csv pour CSV. Si omis, affichage console uniquement |
--download-images |
bool | false |
Télécharge les photos produit en local |
--images-dir |
string | ./images |
Dossier de destination pour les images téléchargées |
--designation |
bool | false |
Indique que la requête est une désignation (informatif) |
# Recherche par référence fabricant
./rexel-scraper search "069001"
# Recherche par désignation
./rexel-scraper search --designation "plaque celiane"
# Limiter à 3 résultats
./rexel-scraper search --limit 3 "069001"
# Télécharger les images
./rexel-scraper search --download-images "069001"
# Télécharger les images dans un dossier custom
./rexel-scraper search --download-images --images-dir ./photos "069001"
# Exporter en JSON
./rexel-scraper search --output resultats.json "069001"
# Exporter en CSV
./rexel-scraper search --output resultats.csv "069001"
# Combiner : images + export JSON + limite
./rexel-scraper search --download-images --limit 3 --output resultats.json "069001"Traite une liste de références depuis un fichier CSV et exporte tous les résultats.
rexel-scraper batch --file <fichier.csv> [options]
| Flag | Type | Défaut | Description |
|---|---|---|---|
--file |
string | (requis) | Fichier CSV d'entrée contenant les références |
--output |
string | resultats.json |
Fichier de sortie (.json ou .csv selon extension) |
--limit |
int | 5 |
Nombre maximum de résultats par requête |
--download-images |
bool | false |
Télécharge les photos produit en local |
--images-dir |
string | ./images |
Dossier de destination pour les images |
Une référence par ligne, première colonne utilisée. Le header est optionnel et auto-détecté (reference, ref, designation, query).
Séparateurs supportés : , ou ;.
reference
069001
LEG069335
078545Ou sans header :
069001
LEG069335
078545Les lignes commençant par # sont ignorées (commentaires).
# Batch simple avec export JSON
./rexel-scraper batch --file references.csv
# Batch avec images et export custom
./rexel-scraper batch --file references.csv --download-images --output resultats.json
# Batch avec export CSV
./rexel-scraper batch --file references.csv --output resultats.csv
# Limiter les résultats par référence
./rexel-scraper batch --file references.csv --limit 2 --output resultats.json[
{
"query": "069001",
"results": [
{
"designation": "Plaque Céliane 1 poste blanc antimicrobien",
"marque": "Legrand",
"ref_rexel": "LEG069001",
"ref_fabricant": "069001",
"url": "https://www.rexel.fr/frx/.../LEG069001/p/62740601",
"image_url": "https://apipep.rexel.fr/media/api/fr/content/62740601/LARGE",
"image_locale": "./images/LEG069001.jpg"
}
]
}
]Séparateur ;, encodage UTF-8 avec BOM (compatible Excel).
Colonnes : query, designation, marque, ref_rexel, ref_fabricant, url, image_url, image_locale.
=== Résultats pour '069001' (5 trouvé(s)) ===
--- Résultat 1 ---
Désignation : Plaque Céliane 1 poste blanc antimicrobien
Marque : Legrand
Réf Rexel : LEG069001
Réf Fabricant: 069001
URL : https://www.rexel.fr/frx/.../LEG069001/p/62740601
Image URL : https://apipep.rexel.fr/media/api/fr/content/62740601/LARGE
rexel-scraper/
├── main.go # Point d'entrée CLI (search + batch)
├── go.mod
├── go.sum
├── internal/
│ ├── scraper/
│ │ ├── api.go # Client API directe (eu.dif.rexel.com)
│ │ ├── browser.go # Fallback chromedp (navigateur headless)
│ │ └── scraper.go # Orchestrateur + téléchargement images
│ ├── models/
│ │ └── product.go # Structs Product, SearchResult
│ └── output/
│ ├── json.go # Export JSON
│ └── csv.go # Export CSV
└── images/ # Images téléchargées (créé automatiquement)