Come estrarre i metadati del sito Web utilizzando l’API di meta scraping di winadmin.it

In generale, il web scraping estrae i dati da un sito web dall’HTML prodotto quando viene caricata una pagina web.

Metascraping sta estraendo i metadati della pagina web dai meta tag di una pagina web.

I metadati di una pagina Web sono informazioni sulla pagina ma non sul contenuto della pagina. Ad esempio, i metadati possono includere il nome dell’autore, il titolo e la descrizione della pagina web.

Aiuta gli utenti e i motori di ricerca a capire di cosa tratta la pagina. Lo scraping dei metadati consente a un utente di raccogliere rapidamente informazioni sulle pagine Web in meno tempo.

È possibile utilizzare diversi approcci per scartare le pagine Web per i loro metadati, incluso lo scraping manuale, l’utilizzo di una libreria o l’utilizzo di un’API come l’API winadmin.it Metascraping.

Molti modi per uccidere un gatto

Per rottamare manualmente, è possibile aprire una pagina Web utilizzando Chrome DevTools ed estrarre i metadati dalla scheda Elementi. Tuttavia, questo manuale, ripetitivo e noioso quando si ha a che fare con più pagine. Possiamo automatizzare l’attività utilizzando più approcci:

Il primo approccio è scrivere il codice da zero. In questo approccio, effettui una richiesta HTTP al sito Web di cui desideri estrarre i metadati. Successivamente, puoi analizzare l’HTML di risposta estraendo i dati dai meta tag utilizzando espressioni regolari o pattern matching. Tuttavia, questo approccio sta reinventando la ruota poiché passerai del tempo a riscrivere il codice esistente.

Il secondo approccio consiste nell’utilizzare una libreria in qualsiasi linguaggio di programmazione si preferisca. Ciò consente di astrarre dai dettagli dell’implementazione e semplifica le cose. Tuttavia, se il linguaggio di programmazione di tua scelta non dispone di una libreria adatta o il particolare runtime che stai utilizzando non supporta la libreria, non puoi utilizzarla.

Il terzo approccio consiste nell’utilizzare un’API come l’API metascraping winadmin.it. Questo approccio è ideale perché ti offre un’interfaccia uniforme indipendentemente dal tuo linguaggio di programmazione. È utilizzabile in qualsiasi lingua purché supporti l’esecuzione di richieste HTTP.

Questo articolo dimostrerà come utilizzare l’API metascraping winadmin.it con cURL, PHP e JavaScript (NodeJS).

A causa degli svantaggi di altri approcci, i vantaggi dell’utilizzo dell’API winadmin.it sono:

  • È indipendente dalla lingua e dall’ambiente di runtime.
  • Eviti di reinventare la ruota e passi meno tempo a scrivere codice.
  • Puoi raschiare più siti Web in modo efficiente (in pochi secondi).
  • È incredibilmente facile da usare.
  • Puoi usarlo gratuitamente.

Introduzione all’uso dell’API winadmin.it

Per utilizzare l’API winadmin.it, avrai bisogno di una chiave API. Per ottenerne uno, vai sul sito Web winadmin.it e crea un account gratuito. Dopo aver creato il tuo account, accedi alla dashboard. Dalla dashboard, dovresti essere in grado di vedere la tua chiave API.

L’endpoint API si trova in https://api.winadmin.it.com/metascraping. Quando effettui una richiesta, devi fornire la tua chiave API come intestazione della richiesta con il nome x-api-key e il valore è la tua chiave API.

Dovrai anche passare parametri aggiuntivi nel corpo della richiesta. Questi sono l’URL, il dispositivo e il proxyCountry.

  • URL specifica l’URL della pagina Web di cui desideri eseguire lo scraping dei metadati.
  • Dispositivo specifica il dispositivo utilizzato per visitare il sito durante lo scraping dei metadati. Le tue opzioni per i dispositivi sono mobile o desktop.
  • Il paese proxy specifica il paese da cui deve essere effettuata la richiesta prima che i dati vengano prelevati. Il paese proxy, tuttavia, è una funzionalità premium e può essere utilizzato solo con i piani a pagamento winadmin.it.

Dato che i parametri verranno passati come parte del corpo, la richiesta deve essere una richiesta POST poiché le richieste GET non possono contenere metadati.

Nella prima dimostrazione, utilizzeremo l’utilità cURL dalla riga di comando per richiedere l’API Metascraping. Per utilizzare cURL, dovrai prima installarlo.

Userò un terminale Bash. Questo dovrebbe essere il terminale predefinito su macOS e Linux. Per Windows, dovrai installare Git Bash.

Dopo aver installato cURL, possiamo utilizzare il comando cURL per effettuare la richiesta. Passeremo le opzioni al comando per specificare i parametri della richiesta: il metodo della richiesta, l’endpoint, il corpo della richiesta e le intestazioni della richiesta.

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

NB: La barra rovesciata dopo le prime tre righe consente di suddividere l’input del comando in più righe.

Questo comando ha specificato il metodo HTTP come POST e l’endpoint come endpoint di meta-scraping dell’API winadmin.it.

Abbiamo anche inviato il corpo della richiesta come oggetto JSON con una proprietà URL specificata come https://tesla.com. Infine, abbiamo aggiunto le intestazioni che specificano il tipo di contenuto del corpo come JSON e fornito la chiave API utilizzando l’intestazione x-api-key.

Quando eseguiamo questo comando, otteniamo il seguente output:

{"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"}}

Questo è l’output corretto.

Per questo progetto, creeremo uno script NodeJS per recuperare i dati dall’API. Ciò significa che avrai bisogno di NodeJS installato. Avrai anche bisogno di NPM o di qualsiasi altro gestore di pacchetti per Node per gestire le dipendenze del progetto. Userò anche il terminale Bash per eseguire i comandi.

Per utilizzare l’API in JavaScript, prima creiamo una cartella di progetto vuota e la apriamo in un terminale.

mkdir metascraping-js && cd metascraping-js

Successivamente, possiamo creare il file in cui scriveremo lo script:

touch index.js

Quindi possiamo istanziare il progetto come progetto Node:

npm init -y

Per utilizzare la sintassi ESModule all’interno del nostro file, aggiungi la riga “type”: “module” alla radice del file package.json in modo tale che assomigli a questo:

{
  "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",
}

Successivamente, installeremo il pacchetto node-fetch. Questo pacchetto fornisce una funzione di recupero in NodeJS simile alla funzione di recupero del browser. Ciò rende più semplice effettuare richieste HTTP in NodeJS piuttosto che utilizzare il modulo http integrato per effettuare richieste.

npm install node-fetch

Quando il pacchetto è installato correttamente, possiamo iniziare a modificare lo script. Apri il file index.js utilizzando un editor di testo a tua scelta. Nel mio caso, utilizzerò l’editor di testo nano basato su terminale.

nano index.js

Modificando il file index.js, iniziamo importando la funzione fetch, che è l’esportazione predefinita del modulo node-fetch.

import fetch from 'node-fetch'

Quindi, definiremo il corpo della nostra richiesta. Questa sarà una stringa JSON con una proprietà url. Il valore della proprietà url è la pagina web di cui vogliamo ottenere i metadati.

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

Successivamente, possiamo definire le opzioni di richiesta che passeremo alla funzione fetch quando alla fine la chiameremo.

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

Abbiamo definito il nostro metodo di richiesta come una richiesta POST. Abbiamo anche definito due intestazioni. Uno specifica che il corpo contiene dati JSON e l’altro fornisce la chiave API.

Puoi sostituire con la tua vera chiave API. In pratica, la chiave API non dovrebbe essere hardcoded nel file ma dovrebbe essere caricata utilizzando variabili ambientali. Infine, abbiamo specificato la proprietà body come valore della costante del corpo definita in precedenza.

Infine, effettuiamo la chiamata per il recupero

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

Qui abbiamo chiamato la funzione fetch, passando l’endpoint API e le opzioni definite in precedenza. Poiché fetch restituisce una promessa, abbiamo allegato un callback che analizza le risposte JSON utilizzando then.

Il callback restituisce un’altra promessa e, quando si risolve, andremo a console.log() l’oggetto restituito.

Quindi, alla fine, il nostro file dovrebbe assomigliare a questo.

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.winadmin.it.com/metascraping', options)
    .then(response => response.json())
    .then(json => console.log(json))

Per eseguire lo script, salva le modifiche e chiudi nano o l’editor di testo che stai utilizzando, quindi inserisci il seguente comando:

node .

Dovresti ottenere i seguenti metadati:

{
  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'
  }
}

Utilizzo dell’API winadmin.it con PHP

Per utilizzare l’API winadmin.it Metascraping, assicurati innanzitutto di aver installato PHP e Composer sul tuo computer locale.

Per iniziare, crea e apri la cartella del progetto.

mkdir metascraping-php && cd metascraping-php

Successivamente, installa GuzzleHTTP. Guzzle è uno dei tanti client PHP che puoi utilizzare con l’API winadmin.it.

composer require guzzlehttp/guzzle

Una volta installato Guzzle, possiamo creare uno script con

touch script.php

Quindi possiamo iniziare a scrivere il codice. Usando un editor di testo a tua scelta, apri il file script.php. Nel mio caso, userò nano che è un editor di testo basato su terminale.

nano script.php

All’interno dello script, inseriamo PHP standard

<?php
    // All code goes here
?>

Ora per caricare le estensioni, importa le classi Request e Client da Guzzle. Questo codice dovrebbe essere scritto tra che abbiamo scritto prima.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Successivamente, possiamo creare un client istanziando la classe GuzzleHttpClient

$client = new GuzzleHttpClient();

Successivamente, possiamo definire le intestazioni per la richiesta. Per questa particolare richiesta, forniremo due intestazioni, una che specifica che il tipo di contenuto del corpo è JSON e l’altra contenente la nostra chiave API.

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

Sostituisci con la tua chiave API effettiva dal dashboard API winadmin.it.

Quindi, possiamo definire il corpo. Nel nostro caso, il corpo sarà una stringa JSON con l’URL della proprietà impostato su “https://twitter.com”

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

Per creare una richiesta, istanziamo la classe di richiesta che abbiamo importato in precedenza, passando il metodo della richiesta, l’endpoint, le intestazioni e il corpo della richiesta.

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

Successivamente, utilizziamo il client per inviare la richiesta.

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

Successivamente, possiamo estrarre il corpo della richiesta e stamparlo sulla console

echo $response->getBody();

Se hai copiato correttamente il codice, il file script.php dovrebbe apparire così

<?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.winadmin.it.com/metascraping', $headers, $body);

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

	echo $response->getBody();
?>

Salva lo script, chiudilo ed eseguilo usando

php script.php

Dovresti ottenere il seguente output:

{
    "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"
     }
}

Parole finali

Questa guida ha esaminato diversi modi per utilizzare l’API metascraping winadmin.it.

L’API Metascraping ti consente anche di fornire più parametri oltre a quello dell’URL. Uno di questi parametri è il parametro proxy, a cui è possibile accedere solo con il piano premium API winadmin.it. Indipendentemente da ciò, l’API winadmin.it rimane abbastanza potente per molti usi.

Consulta la documentazione ufficiale dell’API winadmin.it per ulteriori informazioni.