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
- W3Schools - Analizador DOM de HTML: Desmitifica el DOM de HTML.
- MDN Web Docs - Análisis y serialización de XML: Para principios de análisis de XML que se aplican a XHTML.
- Documentación de Beautiful Soup: Una biblioteca de Python para el análisis de HTML.
- Documentación de libxml2: Detalles sobre
xmllint
y herramientas relacionadas con XML.