Bash:
Analizando HTML

Cómo hacerlo:

Bash no es la primera opción para parsear HTML, pero se puede hacer con herramientas como grep, awk, sed, o utilidades externas como lynx. Para robustez, utilizaremos xmllint del paquete libxml2.

# Instalar xmllint si es necesario
sudo apt-get install libxml2-utils

# HTML de muestra
cat > sample.html <<EOF
<html>
<head>
  <title>Página de Muestra</title>
</head>
<body>
  <h1>Hola, Bash!</h1>
  <p id="myPara">Bash puede leerme.</p>
</body>
</html>
EOF

# Parsear el Título
title=$(xmllint --html --xpath '//title/text()' muestra.html 2>/dev/null)
echo "El título es: $title"

# Extraer Párrafo por ID
para=$(xmllint --html --xpath '//*[@id="myPara"]/text()' muestra.html 2>/dev/null)
echo "El contenido del párrafo es: $para"

Salida:

El título es: Página de Muestra
El contenido del párrafo es: Bash puede leerme.

Estudio Profundo

En el pasado, los programadores usaban herramientas basadas en regex como grep para escanear HTML, pero era complicado. HTML no es regular—es contextual. Las herramientas tradicionales no capturan esto y pueden ser propensas a errores.

¿Alternativas? Muchas. Python con Beautiful Soup, PHP con DOMDocument, JavaScript con analizadores DOM—lenguajes con bibliotecas diseñadas para entender la estructura de HTML.

Usar xmllint en scripts de bash es sólido para tareas simples. Entiende XML, y por extensión, XHTML. HTML regular puede ser impredecible, sin embargo. No siempre sigue las estrictas reglas de XML. xmllint fuerza el HTML a un modelo XML que funciona bien para HTML bien formado, pero puede tropezar con cosas desordenadas.

Ver También