En général, le web scraping consiste à extraire des données d’un site web à partir du code HTML produit lorsqu’une page web est chargée.

Le méta-scraping consiste à extraire les métadonnées d’une page web à partir des balises méta d’une page web.

Les métadonnées d’une page web sont des informations sur la page, mais pas sur son contenu. Par exemple, les métadonnées peuvent inclure le nom de l’auteur, le titre et la description de la page web.

Elles aident les utilisateurs et les moteurs de recherche à comprendre le contenu de la page. L’extraction de métadonnées permet à un utilisateur de collecter rapidement des informations sur des pages web en peu de temps.

Plusieurs approches peuvent être utilisées pour extraire les métadonnées des pages web : manuellement, à l’aide d’une bibliothèque ou à l’aide d’une API telle que l’API Metascraping de Geekflare.

Plusieurs façons de tuer un chat

Pour faire du scraping manuel, on peut ouvrir une page web en utilisant Chrome DevTools et extraire les métadonnées de l’onglet Elements. Cependant, cette méthode manuelle est répétitive et fastidieuse lorsque vous avez affaire à plusieurs pages. Nous pouvons automatiser la tâche en utilisant plusieurs approches :

La première approche consiste à écrire le code à partir de zéro. Dans cette approche, vous faites une requête HTTP au site web dont vous voulez extraire les métadonnées. Ensuite, vous pouvez analyser la réponse HTML en extrayant les données des balises méta à l’aide d’expressions régulières ou de filtrage. Cependant, cette approche revient à réinventer la roue car vous passerez du temps à réécrire le code existant.

La seconde approche consiste à utiliser une bibliothèque dans le langage de programmation de votre choix. Cela vous permet de faire abstraction des détails de l’implémentation et de garder les choses simples. Toutefois, si le langage de programmation de votre choix ne dispose pas d’une bibliothèque appropriée ou si le moteur d’exécution que vous utilisez ne prend pas en charge la bibliothèque, vous ne pouvez pas l’utiliser.

La troisième approche consiste à utiliser une API comme l’API Geekflare Metascraping. Cette approche est idéale car elle vous offre une interface uniforme quel que soit votre langage de programmation. Elle est utilisable dans n’importe quel langage à condition qu’il prenne en charge les requêtes HTTP.

Cet article vous montrera comment utiliser l’API Geekflare Metascraping avec cURL, PHP et JavaScript (NodeJS).

Pourquoi devriez-vous utiliser l’API Geekflare Metascraping ?

En raison des inconvénients des autres approches, les avantages de l’utilisation de l’API Geekflare sont les suivants :

  • Elle est indépendante du langage et de l’environnement d’exécution.
  • Vous évitez de réinventer la roue et passez moins de temps à écrire du code.
  • Vous pouvez récupérer plusieurs sites web de manière efficace (en quelques secondes).
  • Il est incroyablement facile à utiliser.
  • Vous pouvez l’utiliser gratuitement.

Commencer à utiliser l’API Geekflare

Pour utiliser l’API Geekflare, vous aurez besoin d’une clé API. Pour en obtenir une, rendez-vous sur le site Siterelic et créez un compte gratuit. Après avoir créé votre compte, connectez-vous au tableau de bord. Dans le tableau de bord, vous devriez pouvoir voir votre clé API.

Geekflare-Dashboard-1

Aperçu de l’API Geekflare Metascraping

Le point de terminaison de l’API est situé à l’adresse https://api.geekflare.com/fr/metascraping. Lorsque vous faites une demande, vous devez fournir votre clé API en tant qu’en-tête de demande avec le nom x-api-key et la valeur de votre clé API.

Vous devrez également fournir des paramètres supplémentaires dans le corps de la requête. Il s’agit de l’url, de l’appareil et du proxyCountry.

  • L’URL spécifie l’URL de la page web dont vous voulez extraire les métadonnées.
  • Device spécifie l’appareil utilisé pour visiter le site lors de l’extraction des métadonnées. Vous avez le choix entre un appareil mobile et un appareil de bureau.
  • Le paysproxy indique le pays à partir duquel la demande doit être effectuée avant que les données ne soient extraites. Le pays du proxy, cependant, est une fonctionnalité premium et ne peut être utilisé que dans le cadre des plans payants de Geekflare.

Étant donné que les paramètres seront transmis dans le corps de la requête, celle-ci doit être une requête POST car les requêtes GET ne peuvent pas contenir de métadonnées.

Utilisation de l’API Geekflare Metascraping dans cURL

Dans la première démonstration, nous utiliserons l’utilitaire cURL à partir de la ligne de commande pour demander l’API Metascraping. Pour utiliser cURL, vous devez d’abord l’installer.

Je vais utiliser un terminal Bash. Il s’agit du terminal par défaut sous macOS et Linux. Pour Windows, vous devrez installer Git Bash.

Une fois cURL installé, nous pouvons utiliser la commande cURL pour effectuer la requête. Nous passerons des options à la commande pour spécifier les paramètres de la requête : la méthode de requête, le point de terminaison, le corps de la requête et les en-têtes de la requête.

curl -X POST \N
https://api.geekflare.com/fr/metascraping \N- \N- \N- \N- \N- \N 
-d '{"url" : "https://tesla.com" }' \
-H 'Content-Type : application/json' \N- H 'x-api-key : <API_KEY>' \N- H
-H 'x-api-key : <API_KEY>'

NB : La barre oblique inverse après les trois premières lignes vous permet de diviser l’entrée de la commande en plusieurs lignes.

Cette commande spécifie la méthode HTTP comme étant POST et le point d’arrivée comme étant le point d’arrivée de méta-scraping de l’API Geekflare.

Nous avons également envoyé le corps de la requête en tant qu’objet JSON avec une propriété URL spécifiée comme https://tesla.com. Enfin, nous avons ajouté les en-têtes qui spécifient le type de contenu du corps en tant que JSON et fourni la clé API à l’aide de l’en-tête x-api-key.

Lorsque nous exécutons cette commande, nous obtenons le résultat suivant :

{"timestamp":1669328564856,"apiStatus":"success","apiCode":200,"meta":{"url":"https://tesla.com", "device" : "desktop", "test":{"id" : "1fh2c30i05vmvxb99pdh6t6hze2x72jv"}}, "data":{"author":null, "date":null, "description" : "Tesla accélère la transition du monde vers l'énergie durable avec des voitures électriques, des solutions solaires et des solutions intégrées d'énergie renouvelable pour les particuliers et les entreprises.", "image" : "https://tesla-cdn.thron.com/delivery/public/image/tesla/6139697c-9d6a-4579-837e-a9fc5df4a773/bvlatuR/std/1200x628/Model-3-Homepage-Social-LHD", "logo" : "https://tesla.com/themes/custom/tesla_frontend/assets/favicons/favicon-196x196.png", "publisher" : "Tesla", "title" : "Electric Cars, Solar & Clean Energy | Tesla", "url" : "https://www.tesla.com/", "lang" : "en"}}

C’est le résultat correct.

Utilisation de l’API Geekflare Metascraping avec JavaScript

Pour ce projet, nous allons créer un script NodeJS pour récupérer les données de l’API. Cela signifie que vous aurez besoin d’installer NodeJS. Vous aurez également besoin de NPM ou de tout autre gestionnaire de paquets pour Node afin de gérer les dépendances du projet. Je vais également utiliser le terminal Bash pour exécuter des commandes.

Pour utiliser l’API en JavaScript, nous créons d’abord un dossier de projet vide et l’ouvrons dans un terminal.

mkdir metascraping-js && cd metascraping-js

Ensuite, nous pouvons créer le fichier dans lequel nous allons écrire le script :

touch index.js

Ensuite, nous pouvons instancier le projet en tant que projet Node :

npm init -y

Pour utiliser la syntaxe ESModule dans notre fichier, ajoutez la ligne"type: "module” à la racine du fichier package.json de manière à ce qu’il ressemble à ceci :

{
  "name" : "metascraping",
  "version" : "1.0.0",
  "description" : "",
  "main" : "index.js",
  "type" : "module",
  "scripts" : {
    "test" : "echo \"Erreur : aucun test spécifié\" && exit 1"
  },
  "keywords" : [],
  "author" : "",
  "licence" : "ISC",
}

Ensuite, nous allons installer le paquet node-fetch. Ce paquetage fournit une fonction fetch dans NodeJS qui est similaire à la fonction fetch du navigateur. Il est ainsi plus facile d’effectuer des requêtes HTTP dans NodeJS que d’utiliser le module http intégré pour effectuer des requêtes.

npm install node-fetch

Lorsque le paquetage est correctement installé, nous pouvons commencer à éditer le script. Ouvrez le fichier index.js en utilisant l’éditeur de texte de votre choix. Dans mon cas, je vais utiliser l’éditeur de texte nano basé sur le terminal.

nano index.js

En éditant le fichier index.j s, nous commençons par importer la fonction fetch, qui est l’exportation par défaut du module node-fetch.

import fetch de 'node-fetch'

Ensuite, nous allons définir le corps de notre requête. Il s’agira d’une chaîne JSON avec une propriété url. La valeur de la propriété url est la page web dont nous voulons obtenir les métadonnées.

const body = JSON.stringify({ url : 'https://spacex.com' }) ;

Ensuite, nous pouvons définir les options de requête que nous transmettrons à la fonction fetch lorsque nous l’appellerons.

const options = {
    method : 'POST',
    headers : {
        'Content-Type' : 'application/json',
        'x-api-key' : <Votre clé d'API ici&gt
    },
    body : corps
}

Nous avons défini notre méthode de requête comme étant une requête POST. Nous avons également défini deux en-têtes. L’un précise que le corps contient des données JSON et l’autre fournit la clé API.

Vous pouvez remplacer par votre véritable clé d’API. En pratique, la clé API ne doit pas être codée en dur dans le fichier, mais doit être chargée à l’aide de variables d’environnement. Enfin, nous avons spécifié la propriété body comme étant la valeur de la constante body que nous avons définie plus tôt.

Enfin, nous lançons l’appel à fetch

fetch('https://api.geekflare.com/fr/metascraping', options)
    .then(response => response.json())
    .then(json => console.log(json))

Ici, nous avons appelé la fonction fetch, en lui passant le point de terminaison de l’API et les options que nous avons définies plus tôt. Puisque fetch renvoie une promesse, nous avons attaché un callback qui analyse les réponses JSON en utilisant then.

Le callback renvoie une autre promesse, et lorsqu’il se résout, nous allons console.log() l’objet renvoyé.

Au final, notre fichier devrait ressembler à ceci.

import fetch de 'node-fetch'

const body = JSON.stringify({ url : 'https://spacex.com' }) ;

const options = {
    method : 'POST',
    headers : {
        'Content-Type' : 'application/json',
        'x-api-key' : <Votre clé d'API ici&gt
    },
    body : corps
}

fetch('https://api.geekflare.com/fr/metascraping', options)
    .then(response => response.json())
    .then(json => console.log(json))

Pour exécuter le script, enregistrez les modifications et fermez nano ou l’éditeur de texte que vous utilisez, puis entrez la commande suivante :

node .

Vous devriez obtenir les métadonnées suivantes :

{
  timestamp : 1669305079698,
  apiStatus : "success",
  apiCode : 200,
  meta : {
    url : 'https://spacex.com',
    device : 'desktop',
    test : { id : '8m3srgqw06q2k8li5p6x70s8165d6e2f' }
  },
  data : {
    author : null,
    date : null,
    description : "SpaceX conçoit, fabrique et lance des fusées et des engins spatiaux de pointe",
    image : 'https://www.spacex.com/static/images/share.jpg',
    logo : 'https://spacex.com/static/images/favicon.ico',
    éditeur : "SpaceX",
    titre : "SpaceX",
    url : 'http://www.spacex.com/',
    lang : 'en'
  }
}

Utiliser l’API Geekflare avec PHP

Pour utiliser l’API Geekflare Metascraping, assurez-vous d’abord que PHP et Composer sont installés sur votre machine locale.

Pour commencer, créez et ouvrez le dossier du projet.

mkdir metascraping-php && cd metascraping-php

Ensuite, installez GuzzleHTTP. Guzzle est l’un des nombreux clients PHP que vous pouvez utiliser avec l’API Geekflare.

composer require guzzlehttp/guzzle

Une fois Guzzle installé, nous pouvons créer un script avec

touch script.php

Ensuite, nous pouvons commencer à écrire le code. En utilisant un éditeur de texte de votre choix, ouvrez le fichier script.php. Dans mon cas, je vais utiliser nano qui est un éditeur de texte basé sur un terminal.

nano script.php

À l’intérieur du script, nous insérons du PHP standard

<?php
    // Tout le code va ici
?&gt

Maintenant, pour charger les extensions, importez les classes Request et Client de Guzzle. Ce code doit être écrit entre le <?php et le ?> que nous avons écrit précédemment.

require_once('vendor/autoload.php') ;

use GuzzleHttp\Client ;
use GuzzleHttp\Psr7\Request ;

Ensuite, nous pouvons créer un client en instanciant la classe GuzzleHttp\Client

$client = new GuzzleHttp\Client() ;

Ensuite, nous pouvons définir les en-têtes de la requête. Pour cette requête particulière, nous fournirons deux en-têtes, l’un spécifiant que le type de contenu du corps est JSON et l’autre contenant notre clé API.

$headers = [
    'x-api-key' => <Votre clé d'API ici>,
    'Content-Type' => 'application/json'
] ;

Remplacez <Votre CLÉ D'API ICI> par votre clé d’API réelle depuis le tableau de bord API de Geekflare.

Ensuite, nous pouvons définir le corps. Dans notre cas, le corps sera une chaîne JSON avec la propriété url fixée à "https://twitter.com"

$body = json_encode([
    "url" => "https://twitter.com"
]) ;

Pour créer une requête, nous instancions la classe de requête que nous avons importée plus tôt, en lui passant la méthode de requête, le point de terminaison, les en-têtes et le corps de la requête.

$request = new Request('POST', 'https://api.geekflare.com/fr/metascraping', $headers, $body) ;

Ensuite, nous utilisons le client pour envoyer la requête.

$response = $client->sendAsync($request)->wait() ;

Ensuite, nous pouvons extraire le corps de la requête et l’imprimer sur la console

echo $response->getBody() ;

Si vous avez copié le code correctement, le fichier script.php devrait ressembler à ceci

<?php
    require_once('vendor/autoload.php') ;

	use GuzzleHttp\Client ;
	use GuzzleHttp\Psr7\Request ;

	$client = new GuzzleHttp\Client() ;

	$headers = [
    	'x-api-key' => <Votre clé d'API>,
    	'Content-Type' => 'application/json'
	] ;

	$body = json_encode([
    	"url" => "https://twitter.com"
	]) ;

	$request = new Request('POST', 'https://api.geekflare.com/fr/metascraping', $headers, $body) ;

	$response = $client->sendAsync($request)->wait() ;

	echo $response->getBody() ;
?&gt

Sauvegardez le script, fermez-le et exécutez-le en utilisant

php script.php

Vous devriez obtenir le résultat suivant :

{
    "timestamp":1669322100912,
    "apiStatus" : "success",
    "apiCode":200,
    "meta" : {
        "url" : "https://twitter.com",
        "device" : "desktop",
        "test":{ 
            "id" : "wn1nj30r04bk0ijtpprwdqmtuirg9lze"
        }
     },
     "data":{ 
         "author":null,
         "date":null,
         "description" : "Les dernières histoires sur Twitter - racontées par des Tweets",
         "image" : "https://abs.twimg.com/a/1602199131/img/moments/moments-card.jpg",
         "logo" : "https://abs.twimg.com/responsive-web/client-web/icon-ios.b1fc7279.png",
         "publisher" : "Twitter",
         "title" : "Explore",
         "url" : "https://twitter.com/explore",
         "lang" : "en"
     }
}

Mot de la fin

Ce guide a présenté différentes façons de consommer l’API Metascraping de Geekflare.

L’API Metascraping vous permet également de fournir d’autres paramètres que l’URL. L’un de ces paramètres est le paramètre proxy, qui n’est accessible qu’avec le plan premium de l’API Geekflare. Quoi qu’il en soit, l’API Geekflare reste suffisamment puissante pour de nombreuses utilisations.

Consultez la documentation officielle de l’API Geekflare pour plus d’informations.