Cómo extraer metadatos del sitio web utilizando la API de raspado de metadatos de kirukiru.es

En general, el raspado web extrae datos de un sitio web del HTML producido cuando se carga una página web.

Metascraping es extraer los metadatos de la página web de las metaetiquetas de una página web.

Los metadatos de una página web son información sobre la página pero no sobre el contenido de la página. Por ejemplo, los metadatos pueden incluir el nombre del autor, el título y la descripción de la página web.

Ayuda a los usuarios y a los motores de búsqueda a comprender de qué se trata la página. El raspado de metadatos permite que un usuario recopile rápidamente información sobre páginas web en menos tiempo.

Se pueden usar varios enfoques para desechar las páginas web en busca de sus metadatos, incluido el raspado manual, el uso de una biblioteca o el uso de una API como la API de Metascraping kirukiru.es.

Muchas maneras de matar a un gato

Para desechar manualmente, se puede abrir una página web con Chrome DevTools y extraer los metadatos de la pestaña Elementos. Sin embargo, este manual, repetitivo y tedioso cuando se trata de varias páginas. Podemos automatizar la tarea utilizando múltiples enfoques:

El primer enfoque es escribir el código desde cero. En este enfoque, realiza una solicitud HTTP al sitio web cuyos metadatos desea extraer. Luego, puede analizar la respuesta HTML extrayendo datos de las metaetiquetas usando expresiones regulares o coincidencia de patrones. Sin embargo, este enfoque está reinventando la rueda, ya que pasará tiempo reescribiendo el código existente.

El segundo enfoque es usar una biblioteca en cualquier lenguaje de programación que prefiera. Esto le permite abstraerse de los detalles de implementación y simplifica las cosas. Sin embargo, si el lenguaje de programación de su elección no tiene una biblioteca adecuada o el tiempo de ejecución particular que está utilizando no es compatible con la biblioteca, entonces no puede usarlo.

El tercer enfoque es usar una API como la API Metascraping kirukiru.es. Este enfoque es ideal porque le brinda una interfaz uniforme independientemente de su lenguaje de programación. Se puede utilizar en cualquier idioma siempre que admita la realización de solicitudes HTTP.

Este artículo demostrará cómo usar la API Metascraping de kirukiru.es con cURL, PHP y JavaScript (NodeJS).

Debido a las desventajas de otros enfoques, las ventajas de usar la API kirukiru.es son:

  • Es independiente del lenguaje y del entorno de tiempo de ejecución.
  • Evita reinventar la rueda y dedica menos tiempo a escribir código.
  • Puede raspar múltiples sitios web de manera eficiente (en cuestión de segundos).
  • Es increíblemente fácil de usar.
  • Puedes usarlo gratis.

Introducción al uso de la API de kirukiru.es

Para utilizar la API de kirukiru.es, necesitará una clave de API. Para obtener uno, vaya al sitio web de kirukiru.es y cree una cuenta gratuita. Después de crear su cuenta, inicie sesión en el panel. Desde el tablero, debería poder ver su clave API.

El punto final de la API se encuentra en https://api.kirukiru.es.com/metascraping. Cuando realiza una solicitud, debe proporcionar su clave API como un encabezado de solicitud con el nombre x-api-key y el valor es su clave API.

También deberá pasar parámetros adicionales en el cuerpo de la solicitud. Estos son la URL, el dispositivo y el país del proxy.

  • URL especifica la URL de la página web cuyos metadatos desea extraer.
  • Dispositivo especifica el dispositivo utilizado para visitar el sitio al extraer metadatos. Sus opciones para dispositivos son móviles o de escritorio.
  • El país proxy especifica el país desde el que se debe realizar la solicitud antes de que se extraigan los datos. Sin embargo, el país proxy es una función premium y solo se puede usar en los planes pagos de kirukiru.es.

Dado que los parámetros se pasarán como parte del cuerpo, la solicitud debe ser una solicitud POST, ya que las solicitudes GET no pueden contener metadatos.

En la primera demostración, usaremos la utilidad cURL desde la línea de comandos para solicitar la API Metascraping. Para usar cURL, primero deberá instalarlo.

Voy a usar una terminal Bash. Esta debería ser la terminal predeterminada en macOS y Linux. Para Windows, deberá instalar Git Bash.

Después de instalar cURL, podemos usar el comando cURL para realizar la solicitud. Pasaremos opciones al comando para especificar los parámetros de la solicitud: el método de solicitud, el punto final, el cuerpo de la solicitud y los encabezados de la solicitud.

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

NB: La barra invertida después de las tres primeras líneas le permite dividir la entrada del comando en varias líneas.

Este comando especificó el método HTTP como POST y el punto final como el punto final de meta-raspado de la API kirukiru.es.

También enviamos el cuerpo de la solicitud como un objeto JSON con una propiedad de URL especificada como https://tesla.com. Por último, agregamos los encabezados que especifican el tipo de contenido del cuerpo como JSON y proporcionamos la clave API mediante el encabezado x-api-key.

Cuando ejecutamos este comando, obtenemos el siguiente resultado:

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

Esa es la salida correcta.

Para este proyecto, crearemos un script de NodeJS para obtener datos de la API. Esto significa que necesitará NodeJS instalado. También necesitará NPM o cualquier otro administrador de paquetes para Node para administrar las dependencias del proyecto. También voy a usar la terminal Bash para ejecutar comandos.

Para usar la API en JavaScript, primero creamos una carpeta de proyecto vacía y la abrimos en una terminal.

mkdir metascraping-js && cd metascraping-js

Luego de esto, podemos crear el archivo donde vamos a escribir el script:

touch index.js

Entonces podemos crear una instancia del proyecto como un proyecto de Nodo:

npm init -y

Para usar la sintaxis de ESModule dentro de nuestro archivo, agregue la línea «tipo»: «módulo» a la raíz del archivo package.json de manera que se vea así:

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

A continuación, instalaremos el paquete node-fetch. Este paquete proporciona una función de búsqueda en NodeJS que es similar a la función de búsqueda del navegador. Esto hace que sea más fácil realizar solicitudes HTTP en NodeJS que usar el módulo http integrado para realizar solicitudes.

npm install node-fetch

Cuando el paquete está correctamente instalado, podemos comenzar a editar el script. Abra el archivo index.js con un editor de texto de su elección. En mi caso, usaré el editor de texto nano basado en terminal.

nano index.js

Al editar el archivo index.js, comenzamos por importar la función de búsqueda, que es la exportación predeterminada del módulo de búsqueda de nodos.

import fetch from 'node-fetch'

Luego, definiremos el cuerpo de nuestra solicitud. Esta será una cadena JSON con una propiedad url. El valor de la propiedad url es la página web cuyos metadatos queremos obtener.

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

A continuación, podemos definir las opciones de solicitud que pasaremos a la función de búsqueda cuando finalmente la llamemos.

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

Hemos definido nuestro método de solicitud como una solicitud POST. También definimos dos encabezados. Uno especifica que el cuerpo contiene datos JSON y el otro proporciona la clave API.

Puede reemplazar con su clave API real. En la práctica, la clave API no debe estar codificada en el archivo, sino que debe cargarse utilizando variables ambientales. Por último, especificamos la propiedad del cuerpo como el valor de la constante del cuerpo que definimos anteriormente.

Finalmente, hacemos la llamada para ir a buscar

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

Aquí, hemos llamado a la función de búsqueda, pasando el punto final de la API y las opciones que definimos anteriormente. Dado que fetch devuelve una promesa, adjuntamos una devolución de llamada que analiza las respuestas JSON usando then.

La devolución de llamada devuelve otra promesa, y cuando se resuelve, vamos a console.log() el objeto devuelto.

Entonces, en última instancia, nuestro archivo debería verse así.

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

Para ejecutar el script, guarde las ediciones y cierre nano o el editor de texto que está utilizando, luego ingrese el siguiente comando:

node .

Debería obtener los siguientes metadatos:

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

Usando la API kirukiru.es con PHP

Para usar la API Metascraping de kirukiru.es, primero asegúrese de tener PHP y Composer instalados en su máquina local.

Para comenzar, cree y abra la carpeta del proyecto.

mkdir metascraping-php && cd metascraping-php

A continuación, instala GuzzleHTTP. Guzzle es uno de los muchos clientes PHP que puede usar con la API kirukiru.es.

composer require guzzlehttp/guzzle

Una vez instalado Guzzle, podemos crear un script con

touch script.php

Entonces podemos empezar a escribir el código. Usando un editor de texto de su elección, abra el archivo script.php. En mi caso, voy a usar nano, que es un editor de texto basado en terminal.

nano script.php

Dentro del script, insertamos PHP repetitivo

<?php
    // All code goes here
?>

Ahora, para cargar las extensiones, importa las clases Request y Client de Guzzle. Este código debe escribirse entre que escribimos antes.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

A continuación, podemos crear un cliente instanciando la clase GuzzleHttpClient

$client = new GuzzleHttpClient();

Luego, podemos definir encabezados para la solicitud. Para esta solicitud en particular, proporcionaremos dos encabezados, uno que especifica que el tipo de contenido del cuerpo es JSON y el otro que contiene nuestra clave API.

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

Reemplace con su clave de API real del panel de API de kirukiru.es.

Entonces, podemos definir el cuerpo. En nuestro caso, el cuerpo será una cadena JSON con la URL de propiedad establecida en «https://twitter.com».

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

Para crear una solicitud, instanciamos la clase de solicitud que importamos anteriormente, pasando el método de solicitud, el punto final, los encabezados y el cuerpo de la solicitud.

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

A continuación, usamos el cliente para enviar la solicitud.

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

Después, podemos extraer el cuerpo de la solicitud e imprimirlo en la consola.

echo $response->getBody();

Si ha copiado el código correctamente, el archivo script.php debería verse así

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

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

	echo $response->getBody();
?>

Guarde el script, ciérrelo y ejecútelo usando

php script.php

Deberías obtener el siguiente resultado:

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

Ultimas palabras

Esta guía analizó diferentes formas de consumir la API Metascraping de kirukiru.es.

La API Metascraping también le permite proporcionar más parámetros que solo la URL. Uno de esos parámetros es el parámetro proxy, al que solo se puede acceder con el plan premium API kirukiru.es. Independientemente, la API de kirukiru.es sigue siendo lo suficientemente potente para muchos usos.

Consulte la documentación oficial de la API de kirukiru.es para obtener más información.