Parseo de HTML en PHP: revisión de bibliotecas y herramientas

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Parseo de HTML en PHP: revisión de bibliotecas y herramientas



El parseo de HTML es una de las tareas frecuentes del desarrollador web. Ya sea para extraer datos de un sitio externo (scraping), analizar páginas propias o automatizar pruebas, no se puede prescindir de una herramienta fiable. PHP, como lenguaje del lado del servidor, ofrece varias formas de trabajar con código HTML. En este artículo analizaremos las tres bibliotecas más populares: PHP Simple HTML DOM Parser, DiDOM y Symfony DomCrawler. Conocerá sus capacidades, puntos fuertes y débiles, y también verá ejemplos de código.



¿Para qué sirve el parseo de HTML?

Las funciones integradas de PHP (file_get_contents, preg_match) son demasiado primitivas para tareas complejas. Las expresiones regulares rápidamente se vuelven engorrosas y se rompen ante el más mínimo cambio en la estructura del HTML. Las bibliotecas especializadas permiten:

  • Acceder a elementos mediante selectores CSS o XPath;
  • Recorrer el árbol DOM como en JavaScript;
  • Extraer texto, atributos, enlaces;
  • Modificar HTML y guardar el resultado.


1. PHP Simple HTML DOM Parser

Una de las bibliotecas más antiguas y conocidas. Funciona sin dependencias externas, es adecuada para PHP 5.6+. Su principal ventaja es una sintaxis intuitiva que recuerda a jQuery.



Instalación

// Descargue el archivo simple_html_dom.php desde GitHubrequire_once 'simple_html_dom.php';


Ejemplo de uso

// Creamos un objeto DOM desde una URL$html = file_get_html('https://example.com');

// Encontramos todos los enlacesforeach($html->find('a') as $link) { echo $link->href . ' - ' . $link->plaintext . "";}

// Extraemos el título h1$h1 = $html->find('h1', 0);echo $h1 ? $h1->plaintext : 'Título no encontrado';

// Limpiamos la memoria$html->clear();


Ventajas y desventajas

  • + Simplicidad y API clara;
  • + No requiere Composer;
  • - Trabajo lento con documentos grandes;
  • - El proyecto no se ha actualizado durante mucho tiempo;
  • - No es totalmente compatible con los estándares modernos de PHP 8.x.


2. DiDOM

Biblioteca moderna, mantenida activamente por la comunidad. Totalmente compatible con PHP 7.4–8.3. Utiliza selectores CSS y XPath, funciona mucho más rápido que Simple HTML DOM.



Instalación mediante Composer

composer require imangazaliev/didom


Ejemplo de uso

use DiDom\\Document;

$document = new Document('https://example.com', true);

// Búsqueda de todos los enlaces$links = $document->find('a');foreach ($links as $link) { echo $link->attr('href') . "";}

// Búsqueda por clase$items = $document->find('.product-title');foreach ($items as $item) { echo $item->text() . "";}

// Extracción del primer elemento$firstTitle = $document->first('h2');echo $firstTitle ? $firstTitle->text() : 'No hay títulos';


Ventajas y desventajas

  • + Alto rendimiento;
  • + Soporte para selectores CSS de cualquier complejidad;
  • + Manejo de codificaciones;
  • - Requiere Composer;
  • - La documentación en español existe, pero es fragmentaria.


3. Symfony DomCrawler

Parte del ecosistema Symfony, pero puede usarse como biblioteca independiente. Proporciona una API potente para navegar por el DOM, extraer datos y trabajar con formularios.



Instalación

composer require symfony/dom-crawlercomposer require symfony/css-selector  // para selectores CSS


Ejemplo de uso

use Symfony\\Component\\DomCrawler\\Crawler;

$html = file_get_contents('https://example.com');$crawler = new Crawler($

Recommendations