Colly pour Go : guide complet de web scraping
1. Qu'est-ce que Colly et pourquoi l'utiliser ?
Colly est une bibliothèque puissante et performante pour le web scraping (parsing) en langage Go. Elle offre une interface propre, asynchrone et facilement extensible pour extraire des données de sites web. Colly est construit sur les paquets net/http et goquery (l'équivalent de jQuery pour Go), permettant aux développeurs d'utiliser la syntaxe familière des sélecteurs CSS pour naviguer dans un document HTML.
Pourquoi utiliser cette bibliothèque ? Dans le monde moderne, les données sont le nouveau pétrole. Le web scraping permet d'automatiser la collecte d'informations : surveillance des prix des concurrents, agrégation d'actualités, analyse de métriques SEO, création de bases de données de produits, et bien plus encore. Colly se distingue des autres solutions par sa rapidité (architecture asynchrone basée sur les goroutines), sa prise en charge intégrée du cache, la gestion automatique des délais (pour respecter les politiques des sites) et son système flexible de callbacks.
La bibliothèque est idéale aussi bien pour de petits scripts que pour de grands systèmes distribués de collecte de données. Grâce au typage strict de Go et à l'absence de runtime (contrairement à Python/Node.js), les applications Colly sont compilées en un seul fichier binaire, ce qui simplifie le déploiement et la mise à l'échelle.
2. Installation
Pour installer Colly, utilisez le gestionnaire de paquets standard de Go. Assurez-vous d'avoir Go version 1.18 ou supérieure.
go get -u github.com/gocolly/colly/v2
Après avoir exécuté la commande, la bibliothèque sera ajoutée à votre fichier go.mod. Il est également recommandé d'installer goquery pour travailler avec le HTML (il sera automatiquement ajouté comme dépendance) :
go get -u github.com/PuerkitoBio/goquery
3. Démarrage rapide : exemple minimal
Créons un scraper simple qui affiche les titres (balises <h1>) de la page d'accueil du site example.com.
package main
import (
"fmt"
"github.com/gocolly/colly/v2"
)
func main() {
// Création d'un nouveau collecteur
c := colly.NewCollector()
// Gestionnaire pour les pages visitées
c.OnHTML("h1", func(e *colly.HTMLElement) {
fmt.Println("Titre :", e.Text)
})
// Gestionnaire d'erreurs
c.OnError(func(r *colly.Response, err error) {
fmt.Println("Erreur :", err)
})
// Lancement du parsing
c.Visit("https://example.com")
}
Exécutez le code avec la commande go run main.go. Vous verrez le titre de la page. C'est la base minimale à partir de laquelle vous pouvez commencer.
4. Méthodes et fonctions principales (minimum 8)
Examinons les méthodes clés de Colly qui couvrent 90% des tâches de web scraping.
4.1 colly.NewCollector()
Signature : func NewCollector(options ...func(*Collector)) *Collector
Fonction : Crée une nouvelle instance du collecteur, l'objet principal pour gérer le parsing. Accepte des fonctions de configuration optionnelles.
// Création avec options
c := colly.NewCollector(
colly.AllowedDomains("example.com"), // Autoriser uniquement example.com
colly.CacheDir("./cache"), // Mettre en cache les requêtes
)
4.2 Collector.Visit()
Signature : func (c *Collector) Visit(URL string) error
Fonction : Initie une requête HTTP GET vers l'URL spécifiée. C'est le point d'entrée pour le parsing.
err := c.Visit("https://exa Aussi dans la bibliothèque
Rate Limiting en JavaScript (Node.js) : Guide complet de la bibliothèque express-rate-limit
Drizzle ORM TypeScript : guide complet avec exemples
Génération de PDF en C++ : bibliothèques, outils et exemples de code
Travailler avec Apache Kafka dans Node.js : la bibliothèque KafkaJS
Jetons JWT en C++ : bibliothèque jwt-cpp pour l'authentification