Bash:
Analisando HTML

Como fazer:

Bash não é a primeira opção para análise de HTML, mas pode ser feito com ferramentas como grep, awk, sed, ou utilitários externos como lynx. Para robustez, usaremos xmllint do pacote libxml2.

# Instalar xmllint se necessário
sudo apt-get install libxml2-utils

# Exemplo de HTML
cat > sample.html <<EOF
<html>
<head>
  <title>Página de Exemplo</title>
</head>
<body>
  <h1>Olá, Bash!</h1>
  <p id="myPara">Bash pode me ler.</p>
</body>
</html>
EOF

# Analisar o Título
title=$(xmllint --html --xpath '//title/text()' sample.html 2>/dev/null)
echo "O título é: $title"

# Extrair Parágrafo por ID
para=$(xmllint --html --xpath '//*[@id="myPara"]/text()' sample.html 2>/dev/null)
echo "O conteúdo do parágrafo é: $para"

Saída:

O título é: Página de Exemplo
O conteúdo do parágrafo é: Bash pode me ler.

Aprofundando

No passado, programadores usavam ferramentas baseadas em regex como grep para escanear HTML, mas isso era complicado. HTML não é regular - é contextual. Ferramentas tradicionais não percebem isso e podem ser propensas a erros.

Alternativas? Muitas. Python com Beautiful Soup, PHP com DOMDocument, JavaScript com analisadores DOM - linguagens com bibliotecas projetadas para entender a estrutura do HTML.

Usar xmllint em scripts bash é sólido para tarefas simples. Ele entende XML, e por extensão, XHTML. HTML regular pode ser imprevisível, no entanto. Ele nem sempre segue as regras estritas do XML. xmllint força o HTML a se adequar a um modelo XML o que funciona bem para HTML bem formado, mas pode tropeçar em coisas bagunçadas.

Veja Também