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
- W3Schools - HTML DOM Parser: Desmistifica o DOM HTML.
- MDN Web Docs - Parsing and serializing XML: Para princípios de análise de XML que se aplicam ao XHTML.
- Documentação Beautiful Soup: Uma biblioteca Python para análise de HTML.
- Documentação libxml2: Detalhes sobre
xmllint
e ferramentas XML relacionadas.