Comment extraire les métadonnées d’un site Web à l’aide de l’API toptips.fr Meta Scraping

En général, le web scraping consiste à extraire des données d’un site Web à partir du code HTML produit lors du chargement d’une page Web.

Metascraping extrait les métadonnées de la 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 le contenu de la page. Par exemple, les métadonnées peuvent inclure le nom de l’auteur, le titre et la description de la page Web.

Il aide les utilisateurs et les moteurs de recherche à comprendre de quoi parle la page. Le grattage des métadonnées permet à un utilisateur de collecter rapidement des informations sur les pages Web en moins de temps.

Plusieurs approches peuvent être utilisées pour supprimer les pages Web de leurs métadonnées, notamment le grattage manuel, l’utilisation d’une bibliothèque ou l’utilisation d’une API telle que l’API toptips.fr Metascraping.

Plusieurs façons de tuer un chat

Pour supprimer manuellement, on peut ouvrir une page Web à l’aide de Chrome DevTools et extraire les métadonnées de l’onglet Éléments. Cependant, ce manuel, répétitif et fastidieux lorsqu’on a 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 souhaitez 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 correspondances de modèles. Cependant, cette approche réinvente la roue car vous passerez du temps à réécrire le code existant.

La deuxième approche consiste à utiliser une bibliothèque dans le langage de programmation que vous préférez. Cela vous permet de faire abstraction des détails de mise en œuvre et de simplifier les choses. Cependant, si le langage de programmation de votre choix ne dispose pas d’une bibliothèque appropriée ou si le runtime particulier 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 Metascraping toptips.fr. Cette approche est idéale car elle vous donne une interface uniforme quel que soit votre langage de programmation. Il est utilisable dans n’importe quelle langue tant qu’il prend en charge les requêtes HTTP.

Cet article explique comment utiliser l’API de métascrapage toptips.fr avec cURL, PHP et JavaScript (NodeJS).

En raison des inconvénients des autres approches, les avantages de l’utilisation de l’API toptips.fr sont :

  • Il est indépendant 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 gratter efficacement plusieurs sites Web (en quelques secondes).
  • Il est incroyablement facile à utiliser.
  • Vous pouvez l’utiliser gratuitement.

Premiers pas avec l’API toptips.fr

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

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

Vous devrez également transmettre des paramètres supplémentaires dans le corps de la requête. Il s’agit de l’URL, du périphérique et du proxyCountry.

  • URL spécifie l’URL de la page Web dont vous souhaitez récupérer les métadonnées.
  • Appareil spécifie l’appareil utilisé pour visiter le site lors de la récupération des métadonnées. Vos options pour les appareils sont mobiles ou de bureau.
  • Le pays proxy spécifie le pays à partir duquel la demande doit être faite avant que les données ne soient récupérées. Le pays proxy, cependant, est une fonctionnalité premium et ne peut être utilisé que dans le cadre des forfaits payants toptips.fr.

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

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

Je vais utiliser un terminal Bash. Cela devrait être le terminal par défaut sur macOS et Linux. Pour Windows, vous devrez installer Git Bash.

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

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

NB : La barre oblique inverse après les trois premières lignes vous permet de diviser la saisie de la commande en plusieurs lignes.

Cette commande a spécifié la méthode HTTP en tant que POST et le point de terminaison en tant que point de terminaison de méta-grattage de l’API toptips.fr.

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 is accelerating the world’s transition to sustainable energy with electric cars, solar and integrated renewable energy solutions for homes and businesses.","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 la bonne sortie.

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 packages pour que Node gère 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

Après cela, 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 sorte qu’il ressemble à ceci :

{
  "name": "metascraping",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
}

Ensuite, nous allons installer le package node-fetch. Ce package fournit une fonction de récupération dans NodeJS similaire à la fonction de récupération du navigateur. Cela facilite la création de requêtes HTTP dans NodeJS plutôt que d’utiliser le module http intégré pour effectuer des requêtes.

npm install node-fetch

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

nano index.js

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

import fetch from 'node-fetch'

Ensuite, nous définirons le corps de notre requête. Cela va être 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 de récupération lorsque nous l’appellerons finalement.

const options = {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'x-api-key': <YOUR API KEY here>
    },
    body: body
}

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 spécifie que le corps contient des données JSON et l’autre fournit la clé API.

Vous pouvez remplacer par votre clé API réelle. 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 la valeur de la constante body que nous avons définie précédemment.

Enfin, nous faisons l’appel pour aller chercher

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

Ici, nous avons appelé la fonction de récupération, en transmettant le point de terminaison de l’API et les options que nous avons définies précédemment. Étant donné que fetch renvoie une promesse, nous avons attaché un rappel qui analyse les réponses JSON à l’aide de then.

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

Donc, finalement, notre fichier devrait ressembler à ceci.

import fetch from 'node-fetch'

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

const options = {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'x-api-key': <YOUR API KEY here>
    },
    body: body
}

fetch('https://api.toptips.fr.com/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 saisissez 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 designs, manufactures and launches advanced rockets and spacecraft.',
    image: 'https://www.spacex.com/static/images/share.jpg',
    logo: 'https://spacex.com/static/images/favicon.ico',
    publisher: 'SpaceX',
    title: 'SpaceX',
    url: 'http://www.spacex.com/',
    lang: 'en'
  }
}

Utilisation de l’API toptips.fr avec PHP

Pour utiliser l’API toptips.fr 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 toptips.fr.

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. À l’aide d’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 PHP passe-partout

<?php
    // All code goes here
?>

Maintenant, pour charger les extensions, importez les classes Request et Client depuis Guzzle. Ce code doit être écrit entre le que nous avons écrit auparavant.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Ensuite, nous pouvons créer un client en instanciant la classe GuzzleHttpClient

$client = new GuzzleHttpClient();

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

$headers = [
    'x-api-key' => <YOUR API KEY HERE>,
    'Content-Type' => 'application/json'
];

Remplacez par votre clé API réelle du tableau de bord de l’API toptips.fr.

Ensuite, nous pouvons définir le corps. Dans notre cas, le corps sera une chaîne JSON avec l’URL de la propriété définie sur « 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 précédemment, en transmettant 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.toptips.fr.com/metascraping', $headers, $body);

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

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

Après, on peut extraire le corps de la requête et l’imprimer sur la console

echo $response->getBody();

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

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

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

$client = new GuzzleHttpClient();

$headers = [
    'x-api-key' => <YOUR API KEY>,
    'Content-Type' => 'application/json'
];

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

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

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

echo $response->getBody();
?>

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

php script.php

Vous devriez obtenir la sortie suivante :

{
    "timestamp":1669322100912,
    "apiStatus":"success",
    "apiCode":200,
    "meta": {
        "url":"https://twitter.com",
        "device":"desktop",
        "test":{ 
            "id":"wn1nj30r04bk0ijtpprwdqmtuirg9lze"
        }
     },
     "data":{ 
         "author":null,
         "date":null,
         "description":"The latest stories on Twitter - as told by 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"
     }
}

Derniers mots

Ce guide a présenté différentes manières d’utiliser l’API Metascraping toptips.fr.

L’API Metascraping vous permet également de fournir plus de paramètres que celui de l’URL. L’un de ces paramètres est le paramètre proxy, accessible uniquement avec le plan premium de l’API toptips.fr. Quoi qu’il en soit, l’API toptips.fr reste suffisamment puissante pour de nombreuses utilisations.

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