20 febrero, 2025
Cómo Crear un Scraper Web en PHP para Extraer Metadatos y URLs
Aprende a programar un scraper web en PHP para extraer metadatos como title, description, keywords y URLs de cualquier sitio web. Tutorial paso a paso

Suscríbete a nuestro canal en Youtube
SuscríbirseEn este tutorial, aprenderás a crear un scraper web en PHP que extraiga información clave de cualquier página web, como el título (<title>
), la descripción (<meta description>
), las palabras clave (<meta keywords>
) y todas las URLs presentes en el contenido. Este script es ideal para analizar sitios web, generar informes SEO o recolectar datos para proyectos personales.
¿Qué es un Scraper Web?
Un scraper web es una herramienta que automatiza la extracción de datos de sitios web. En lugar de copiar manualmente la información, un scraper analiza el código HTML de una página y extrae los elementos específicos que necesitas. En este caso, nos enfocaremos en obtener:
- Título (
<title>
) : El texto que aparece en la pestaña del navegador. - Descripción (
<meta description>
) : Una breve descripción del contenido de la página. - Palabras clave (
<meta keywords>
) : Términos relevantes para SEO (aunque muchas páginas modernas ya no las usan). - URLs : Todos los enlaces (
<a href>
) presentes en la página.
Con PHP, podemos construir un scraper eficiente utilizando bibliotecas nativas como DOMDocument y DOMXPath .
Requisitos Previos
Antes de comenzar, asegúrate de tener lo siguiente:
- PHP instalado : Necesitarás PHP 7.x o superior.
- Extensión cURL habilitada : Para realizar solicitudes HTTP.
- Extensión DOM habilitada : Para analizar el HTML de las páginas.
- Acceso a un servidor web : Puedes usar XAMPP, WAMP o un entorno local.
Paso 1: Configuración Inicial
Comenzaremos creando un archivo PHP llamado scraper.php
. Este archivo contendrá todo el código necesario para extraer los metadatos y las URLs.
php
<?php
// Función para extraer metadatos de una URL
function scrapeMetadata($url) {
// Código aquí...
}
Paso 2: Obtener el Contenido de la Página con cURL
Usaremos cURL para hacer una solicitud HTTP a la URL objetivo y obtener su contenido HTML. Esto es esencial para analizar los datos.
php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Seguir redirecciones
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; ScraperBot/1.0)');
$htmlContent = curl_exec($ch);
curl_close($ch);
if (!$htmlContent) {
die("Error: No se pudo obtener el contenido de la URL.");
}
Este bloque de código realiza lo siguiente:
- Inicializa una sesión cURL.
- Configura opciones como el seguimiento de redirecciones y un User-Agent personalizado.
- Obtiene el contenido HTML de la página.
Paso 3: Analizar el HTML con DOMDocument y DOMXPath
Una vez que tenemos el HTML, lo analizamos usando DOMDocument y DOMXPath . Estas herramientas nos permiten buscar elementos específicos en el código.
php
$dom = new DOMDocument();
libxml_use_internal_errors(true); // Ignorar errores de HTML mal formado
$dom->loadHTML($htmlContent);
libxml_clear_errors();
$xpath = new DOMXPath($dom);
Aquí:
DOMDocument
carga el HTML.DOMXPath
nos permite realizar consultas XPath para extraer elementos específicos.
Paso 4: Extraer los Metadatos
Ahora, extraemos los metadatos clave:
php
$title = $xpath->query('//title')->item(0)->nodeValue ?? 'No encontrado';
$description = $xpath->query('//meta[@name="description"]/@content')->item(0)?->nodeValue ?? 'No encontrado';
$keywords = $xpath->query('//meta[@name="keywords"]/@content')->item(0)?->nodeValue ?? 'No encontrado';
Estas líneas buscan:
- El
<title>
de la página. - La descripción (
<meta name="description">
). - Las palabras clave (
<meta name="keywords">
).
Si algún elemento no existe, se devuelve "No encontrado".
Paso 5: Extraer Todas las URLs
Para extraer todas las URLs presentes en la página, buscamos las etiquetas <a>
con atributos href
.
php
$urls = [];
$links = $xpath->query('//a/@href');
foreach ($links as $link) {
$href = $link->nodeValue;
if (filter_var($href, FILTER_VALIDATE_URL)) {
$urls[] = $href;
} elseif (strpos($href, '/') === 0) { // URLs relativas
$urls[] = rtrim($url, '/') . $href;
}
}
$urls = array_unique($urls); // Eliminar duplicados
Este bloque:
- Busca todas las etiquetas
<a href>
. - Filtra URLs absolutas y relativas.
- Elimina duplicados con
array_unique()
.
Paso 6: Mostrar los Resultados
Finalmente, mostramos los resultados en pantalla:
php
echo "Título: " . $metadata['title'] . "\n";
echo "Descripción: " . $metadata['description'] . "\n";
echo "Palabras Clave: " . $metadata['keywords'] . "\n";
echo "URLs encontradas:\n";
foreach ($metadata['urls'] as $url) {
echo "- " . $url . "\n";
}
Ejemplo de Salida
Supongamos que ejecutamos el script en la URL https://www.ejemplo.com
. La salida podría ser:
Título: Ejemplo - Sitio de Prueba
Descripción: Este es un sitio de prueba para demostrar el scraping de metadatos.
Palabras Clave: prueba, ejemplo, scraping
URLs encontradas:
- - https://www.ejemplo.com/contacto
- - https://www.ejemplo.com/servicios
- - https://www.ejemplo.com/blog
Consideraciones Importantes
-
Respeto a los Términos de Servicio :
- Antes de scrapear un sitio, verifica sus términos de servicio para asegurarte de que permiten el scraping.
-
Robots.txt :
- Revisa el archivo
robots.txt
del sitio para identificar qué partes están permitidas o prohibidas para bots.
- Revisa el archivo
-
Manejo de Errores :
- Añade más validaciones para manejar errores como timeouts o páginas inaccesibles.
-
Rendimiento :
- Si planeas scrapear múltiples páginas, implementa retrasos entre solicitudes para evitar sobrecargar el servidor.
Conclusión
Con este tutorial, has aprendido a crear un scraper web en PHP que extrae metadatos y URLs de cualquier página. Este script es altamente personalizable y puede servir como base para proyectos más avanzados, como análisis SEO, monitoreo de competidores o recolección de datos.
¡Ahora tienes las herramientas para automatizar la extracción de datos web! 🚀
Leido 27167 veces | 14 usuarios
Descarga del código fuente PHP de Cómo Crear un Scraper Web en PHP para Extraer Metadatos y URLs
Accede al código fuente esencial de nuestra aplicación en formato ZIP ó TXT. Ideal para desarrolladores que desean personalizar o integrar nuestra solución.
Opciones de descarga
- Usuarios Registrados: Inicia sesión para descarga inmediata.
- Nuevos Usuarios: Regístrate y descarga.