Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Desarrollo Última actualización: 25 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

En general, el web scraping consiste en extraer datos de un sitio web a partir del HTML que se produce cuando se carga una página web.

Metascraping es extraer los metadatos de la página web a partir 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 su contenido. Por ejemplo, los metadatos pueden incluir el nombre del autor, el título y la descripción de la página web.

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

Se pueden utilizar varios enfoques para raspar 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 Geekflare Metascraping.

Muchas maneras de matar a un gato

Para raspar manualmente, se puede abrir una página web utilizando Chrome DevTools y extraer los metadatos de la pestaña Elementos. Sin embargo, esta tarea manual, repetitiva y tediosa cuando se trata de varias páginas. Podemos automatizar la tarea utilizando varios enfoques:

El imprimación El enfoque consiste en escribir el código desde cero. En este enfoque, usted realiza una petición HTTP a la página web cuyos metadatos desea extraer. Después, puede analizar el HTML de respuesta extrayendo los datos de las metaetiquetas mediante expresiones regulares o coincidencia de patrones. Sin embargo, este enfoque supone reinventar la rueda, ya que perderá tiempo reescribiendo el código existente.

El segundo enfoque consiste en utilizar una biblioteca en el lenguaje de programación que prefiera. Esto le permite abstraerse de los detalles de implementación y mantiene las cosas sencillas. Sin embargo, si el lenguaje de programación de su elección no dispone de una biblioteca adecuada o el tiempo de ejecución concreto que está utilizando no es compatible con la biblioteca, entonces no podrá utilizarla.

El tercer enfoque consiste en utilizar una API como la API Geekflare Metascraping. Este enfoque es ideal porque le proporciona una interfaz uniforme independientemente de su lenguaje de programación. Se puede utilizar en cualquier lenguaje siempre que admita realizar peticiones HTTP.

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

¿Por qué debería utilizar la API de Geekflare Metascraping?

Debido a las desventajas de otros enfoques, las ventajas de utilizar la API de Geekflare son:

  • Es agnóstica al lenguaje y al entorno de ejecución.
  • Evita reinventar la rueda y pasa menos tiempo escribiendo código.
  • Puede raspar múltiples sitios web de forma eficiente (en cuestión de segundos).
  • Es increíblemente fácil de usar.
  • Puede utilizarlo de forma gratuita.

Cómo empezar a utilizar la API de Geekflare

Para utilizar la API de Geekflare, necesitará una clave de API. Para obtener una, vaya a Siterelic y cree una cuenta gratuita. Después de crear su cuenta, acceda al panel de control. Desde el salpicadero, debería poder ver su clave API.

Geekflare-Dashboard-1

Descripción general de la API de Geekflare Metascraping

El punto final de la API se encuentra en https://api.geekflare.com/metascraping. Cuando realice una solicitud, deberá proporcionar su clave API como cabecera de solicitud con el nombre x-api-key y el valor siendo su clave API.

También deberá introducir parámetros adicionales en el cuerpo de la solicitud. Estos son la url, el dispositivo y proxyCountry.

  • URL especifica la URL de la página web cuyos metadatos desea raspar.
  • Dispositivo especifica el dispositivo utilizado para visitar el sitio cuando se raspan los metadatos. Las opciones para los dispositivos son móvil o escritorio.
  • Paísproxy especifica el país desde el que se debe realizar la solicitud antes de raspar los datos. Sin embargo, el país proxy es una función premium y sólo puede utilizarse en los planes de pago de Geekflare.

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

Uso de la API de Geekflare Metascraping en cURL

En la primera demostración, utilizaremos la utilidad cURL desde la línea de comandos para solicitar la API de Metascraping. Para utilizar cURL, primero tendrá que instalarlo.

Voy a utilizar un terminal Bash. Este debería ser el terminal por defecto en macOS y Linux. Para Windows, tendrá que instalar Git Bash.

Una vez instalado cURL, podemos utilizar 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 las cabeceras de la solicitud.

curl -X POST \
https://api.geekflare.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 endpoint como el endpoint de meta-scraping de la API de Geekflare.

También enviamos el cuerpo de la solicitud como un objeto JSON con una propiedad URL especificada como https://tesla.com. Por último, añadimos las cabeceras que especifican el tipo de contenido del cuerpo como JSON y proporcionamos la clave API utilizando la cabecera x-api-key.

Cuando ejecutamos este comando, obtenemos la siguiente salida:

{"timestamp":1669328564856,"apiStatus":"success","apiCode":200,"meta":{"url":"https://tesla.com", "device": "desktop", "test":{"id": "1fh2c30i05vmvxb99pdh6t6hze2x72jv"}}, "data":{"author":null, "date":null, "description": "Tesla está acelerando la transición del mundo hacia la energía sostenible con coches eléctricos, energía solar y soluciones integradas de energía renovable para hogares y empresas.", "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": "Coches eléctricos, energía solar y energía limpia | Tesla", "url": "https://www.tesla.com/", "lang": "en"}}

Esta es la salida correcta.

Uso de la API de Geekflare Metascraping con JavaScript

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

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

mkdir metascraping-js && cd metascraping-js

Después de esto, podemos crear el archivo donde vamos a escribir el script:

touch index.js

Luego podemos instanciar el proyecto como un proyecto Node:

npm init -y

Para utilizar la sintaxis ESModule dentro de nuestro archivo, añada la línea"type: "module" a la raíz del archivo package.json de forma que tenga este aspecto

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

A continuación, instalaremos el paquete node-fetch. Este paquete proporciona una función fetch en NodeJS que es similar a la función fetch del navegador. Esto hace que sea más fácil hacer peticiones HTTP en NodeJS que utilizar el módulo http incorporado para hacer peticiones.

npm install node-fetch

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

nano index.js

Editar el índice de archivos . js, empezamos importando la función fetchque es la exportación por defecto del módulo node-fetch.

import fetch from 'node-fetch'

A continuación, vamos a definir 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 fetch 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 hemos definido dos cabeceras. Una especifica que el cuerpo contiene datos JSON, y la otra proporciona la clave de la API.

Puede sustituir por su clave API real. En la práctica, la clave de la API no debería estar codificada en el archivo, sino que debería cargarse utilizando variables de entorno. Por último, especificamos la propiedad body como el valor de la constante body que definimos anteriormente.

Por último, realizamos la llamada a fetch

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

Aquí hemos llamado a la función fetch, pasándole el punto final de la API y las opciones que definimos anteriormente. Como fetch devuelve una promesa, adjuntamos una devolución de llamada que analiza las respuestas JSON utilizando then.

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

Así que en última instancia, nuestro archivo debe tener este aspecto.

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

Para ejecutar el script, guarde las modificaciones y cierre nano o el editor de texto que esté utilizando, a continuación introduzca el siguiente comando:

node .

Debería obtener los siguientes metadatos

{
 timestamp: 1669305079698,
 apiStatus: 'success',
 apiCode: 200,
 meta: {
 url: 'https://spacex.com',
 dispositivo: 'escritorio',
 test: { id: '8m3srgqw06q2k8li5p6x70s8165d6e2f' }
 },
 data: {
 autor: null,
 fecha: null,
 descripción: 'SpaceX diseña, fabrica y lanza cohetes y naves espaciales avanzadas.',
 imagen: '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'
 }
}

Uso de la API de Geekflare con PHP

Para utilizar la API de Geekflare Metascraping, primero asegúrese de que tiene PHP y Composer instalados en su máquina local.

Para empezar, cree y abra la carpeta del proyecto.

mkdir metascraping-php && cd metascraping-php

A continuación, instale GuzzleHTTP. Guzzle es uno de los muchos clientes PHP que puede utilizar con la API de Geekflare.

composer require guzzlehttp/guzzle

Una vez instalado Guzzle, podemos crear un script con

touch script.php

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

nano script.php

Dentro del script, insertamos PHP boiler-plate

<?php
 // Todo el código va aquí
?&gt

Ahora para cargar las extensiones, importe las clases Request y Client de Guzzle. Este código debe escribirse entre los <? php y ?> que escribimos antes.

require_once('vendor/autoload.php');

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

A continuación, podemos crear un cliente instanciando la clase GuzzleHttp\Client

$client = nuevo GuzzleHttp\Client();

Después, podemos definir cabeceras para la petición. Para esta petición en particular, proporcionaremos dos cabeceras, una que especifica que el tipo de contenido del cuerpo es JSON y otra que contiene nuestra clave API.

$headers = [
 'x-api-key' => <SU CLAVE DE API AQUÍ>,
 'Content-Type' => 'application/json'
];

Sustituya <SU CLAVE DE API AQUÍ> por su clave de API real del panel de control de la API de Geekflare.

A continuación, podemos definir el cuerpo. En nuestro caso, el cuerpo va a ser una cadena JSON con la propiedad url established in "https://twitter.com"

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

Para crear una solicitud, instanciamos la clase de solicitud que importamos anteriormente, pasándole el método de solicitud, el punto final, las cabeceras y el cuerpo de la solicitud.

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

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

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

Después, podemos extraer el cuerpo de la petición e imprimirlo en la consola

echo $respuesta->getBody();

Si ha copiado el código correctamente, el archivo script. php debería tener este aspecto

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

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

$client = new GuzzleHttp\Client();

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

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

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

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

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

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

php script.php

Debería obtener la siguiente salida:

{
 "timestamp":1669322100912,
 "apiStatus": "success",
 "apiCode":200,
 "meta": {
 "url": "https://twitter.com",
 "device": "desktop",
 "test":{ 
 "id": "wn1nj30r04bk0ijtpprwdqmtuirg9lze"
 }
    },
 "data":{ 
 "author":null,
 "date":null,
 "description": "Las últimas historias en Twitter - contadas por 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"
 }
}

Palabras finales

Esta guía ha repasado diferentes formas de consumir la API de Metascraping de Geekflare.

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

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

  • Anesu Kafesu
    Autor
    Desarrollador web full stack y redactor técnico. Actualmente aprendiendo IA.
Gracias a nuestros patrocinadores
Más lecturas sobre desarrollo
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder