cURL : Ce que c’est et comment l’utiliser pour le scraping web

cURL est une commande polyvalente utilisée par les programmeurs pour la collecte et le transfert de données. Mais comment exploiter cURL pour le scraping web ? Cet article vous aidera à démarrer.
7 min de lecture
data collection and web scraping with cURL

Dans cet article de blog, vous apprendrez :

  • Qu’est-ce que cURL ?
  • Comment utiliser cURL ?
  • Pourquoi cURL est-il si populaire ?
  • Utiliser cURL avec des proxies
  • Comment changer le User-Agent
  • Scraping web avec cURL

Qu’est-ce que cURL ?

cURL est un outil en ligne de commande permettant de transférer des données via des protocoles réseau. Le nom cURL signifie ‘Client URL’, et s’écrit également ‘curl’. Cette commande populaire utilise la syntaxe URL pour transférer des données vers et depuis des serveurs. Curl est alimenté par ‘libcurl’, une bibliothèque de transfert URL côté client, gratuite et facile à utiliser.

Pourquoi l’utilisation de curl est-elle avantageuse ?

La polyvalence de cette commande vous permet d’utiliser curl pour de nombreux cas d’usage, notamment :

  • Authentification des utilisateurs
  • Publications HTTP
  • Connexions SSL
  • Support de Proxy
  • Transferts FTP

Le cas d’usage le plus simple de curl serait le téléchargement et l’envoi de sites web entiers en utilisant l’un des protocoles pris en charge.

Protocoles curl

Bien que curl supporte une longue liste de protocoles, il utilisera HTTP par défaut si vous ne spécifiez pas de protocole particulier. Voici la liste des protocoles pris en charge :

DICT FILE FTP
FTPS GOPHER HTTP
HTTPS IMAP IMAPS
LDAP POP3 RTMP
RTSP SCP SFTP
SMB SMBS TELNET
TFTP

Installer curl

La commande curl est installée par défaut dans les distributions Linux.

Comment vérifier si curl est déjà installé ?

1. Ouvrez votre console Linux

2. Tapez ‘curl’, puis appuyez sur ‘entrée’.

3. Si curl est déjà installé, vous verrez le message suivant :

curl: try 'curl --help' for more information

4. Si curl n’est pas encore installé, vous verrez le message suivant : ‘command not found’. Vous pouvez alors vous tourner vers le gestionnaire de paquets de votre distribution pour l’installer (plus de détails ci-dessous).

Comment utiliser cURL

La syntaxe de curl est assez simple :

curl [options] [url]

Par exemple, si vous souhaitez télécharger une page web : webpage.com, exécutez simplement :

curl www.webpage.com

La commande vous affichera alors le code source de la page dans votre terminal. Gardez à l’esprit que si vous ne spécifiez pas de protocole, curl utilisera HTTP par défaut. Vous trouverez ci-dessous un exemple de définition de protocoles spécifiques :

curl ftp://webpage.com

Si vous oubliez d’ajouter le :// curl essaiera de deviner le protocole que vous souhaitez utiliser.

Nous avons brièvement abordé l’utilisation de base de la commande, mais vous pouvez trouver une liste d’options sur le site de documentation de curl. Les options sont les actions possibles que vous pouvez effectuer sur l’URL. Lorsque vous choisissez une option, elle indique à curl quelle action effectuer sur l’URL spécifiée. L’URL indique à cURL où effectuer cette action. cURL vous permet également de lister une ou plusieurs URLs.

Pour télécharger plusieurs URLs, préfixez chaque URL avec -0 suivi d’un espace. Vous pouvez le faire sur une seule ligne ou écrire une ligne différente pour chaque URL. Vous pouvez également télécharger une partie d’une URL en listant les pages. Par exemple :

 curl.exe -O http://example.com/page{1,4,6}.html

Enregistrer le téléchargement

Vous pouvez enregistrer le contenu de l’URL dans un fichier en utilisant curl de deux façons différentes :

1. Méthode -o : Vous permet d’ajouter un nom de fichier où l’URL sera enregistrée. Cette option a la structure suivante :

curl -0 filename.html http://example.com/file.html

2. Méthode -O : Ici, vous n’avez pas besoin d’ajouter un nom de fichier, car cette option vous permet d’enregistrer le fichier sous le nom de l’URL. Pour utiliser cette option, il suffit de préfixer l’URL avec -O.

Reprendre le téléchargement

Il peut arriver que votre téléchargement s’arrête en cours de route. Dans ce cas, réécrivez la commande en ajoutant l’option -C au début :

curl -C - -O http://website.com/file.html

Pourquoi curl est-il si populaire ?

Curl est véritablement le ‘couteau suisse’ des commandes, conçu pour des opérations complexes. Il existe cependant des alternatives, comme ‘wget’ ou ‘Kurly’, qui conviennent mieux aux tâches plus simples.

Curl est apprécié des développeurs car il est disponible sur presque toutes les plateformes. Il est parfois même installé par défaut. Cela signifie que quels que soient les programmes ou tâches que vous exécutez, les commandes curl devraient fonctionner.

De plus, si votre système d’exploitation a moins d’une décennie, il y a de fortes chances que curl soit déjà installé. Vous pouvez également consulter la documentation dans un navigateur et vérifier la documentation curl. Si vous utilisez une version récente de Windows, curl est probablement déjà installé. Sinon, consultez cet article sur Stack Overflow pour en savoir plus.

Utiliser cURL avec des proxies

Certains utilisateurs préfèrent utiliser cURL conjointement avec un Proxy. Les avantages sont notamment :

  1. Améliorer sa capacité à gérer efficacement les requêtes de données depuis différentes géolocalisations.
  2. Augmenter exponentiellement le nombre de tâches de données simultanées pouvant être exécutées en parallèle. 

Pour y parvenir, vous pouvez utiliser les fonctionnalités ‘-x’ et ‘(- – proxy)’ déjà intégrées dans cURL. Voici un exemple de ligne de commande permettant d’intégrer le Proxy que vous utilisez avec cURL :

$ curl -x 026.930.77.2:6666 http://linux.com/

Dans l’extrait de code ci-dessus, ‘6666’ est un espace réservé pour le numéro de port, tandis que ‘026.930.77.2’ est l’adresse IP. 

Bon à savoir : cURL est compatible avec la plupart des types de Proxy courants, notamment HTTP, HTTPS et SOCKS.

Comment changer le User-Agent

Les User-Agents sont des caractéristiques permettant aux sites cibles d’identifier l’appareil qui demande des informations. Un site cible peut exiger que les demandeurs remplissent certains critères avant de retourner les données souhaitées. Cela peut concerner le type d’appareil, le système d’exploitation ou le navigateur utilisé. Dans ce cas, les entités collectant des données devront émuler le ‘profil idéal’ du site cible. 

Pour l’exemple, supposons que le site que vous ciblez ‘préfère’ que les demandeurs utilisent Chrome comme navigateur. Pour obtenir les données souhaitées avec cURL, vous devrez émuler cette ‘caractéristique de navigateur’ comme suit : 

curl -A "Goggle/9.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Chrome/103.0.5060.71" https://getfedora.org/

Scraping web avec cURL

Conseil de pro : Veillez à respecter les règles d’un site web et, en général, n’essayez pas d’accéder à des contenus protégés par mot de passe, ce qui est illégal dans la plupart des cas ou, au minimum, mal vu.

Vous pouvez utiliser curl pour automatiser le processus répétitif lors du scraping web, vous aidant à éviter les tâches fastidieuses. Pour cela, vous devrez utiliser PHP. Voici un exemple trouvé sur GitHub :


<?php

/**
 * @param string $url - the URL you wish to fetch.
 * @return string - the raw HTML response.
 */
function web_scrape($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}

/**
 * @param string $url - the URL you wish to fetch.
 * @return array - the HTTP headers returned.
 */
function fetch_headers($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}

// Example usage:
// var_dump(get_headers("https://www.example.com"));
// echo web_scrape('https://www.example.com/');

?>

Lorsque vous utilisez curl pour scraper une page web, trois options sont à utiliser :

  • Initialise la session
curl_init($url)
  • Exécute la session
curl_exec()
  • Ferme la session
curl_close()

Parmi les autres options à utiliser :

  • Définit l’URL que vous souhaitez scraper
CURLOPT_URL
  • Indique à curl d’enregistrer la page scrapée en tant que variable. (Cela vous permet d’extraire exactement ce que vous souhaitez de la page.)
CURLOPT_RETURNTRANSFER

En conclusion

Bien que cURL soit un puissant outil de scraping web, il nécessite que les entreprises consacrent un temps précieux de développement à la fois à la collecte et au nettoyage des données. C’est là qu’intervient Bright Data. Bright Data, la première infrastructure de données web au monde, propose une large gamme de produits pour répondre aux besoins de scraping web. Les produits Bright Data comprennent les API Web Scraper conçues pour les développeurs, un navigateur automatisé intégrant l’automatisation du déblocage de sites web, un marché de jeux de données pour ceux qui préfèrent recevoir des données précises plutôt que de les scraper, et 400M+ monthly Proxys fiables.