Bash:
Analysering av HTML

Hvordan:

Bash er ikke gå-til for parsing av HTML, men det kan gjøres med verktøy som grep, awk, sed, eller eksterne verktøy som lynx. For robusthet vil vi bruke xmllint fra libxml2-pakken.

# Installer xmllint om nødvendig
sudo apt-get install libxml2-utils

# Eksempel HTML
cat > sample.html <<EOF
<html>
<head>
  <title>Eksempelside</title>
</head>
<body>
  <h1>Hei, Bash!</h1>
  <p id="myPara">Bash kan lese meg.</p>
</body>
</html>
EOF

# Parse tittelen
title=$(xmllint --html --xpath '//title/text()' sample.html 2>/dev/null)
echo "Tittelen er: $title"

# Trekk ut avsnitt ved ID
para=$(xmllint --html --xpath '//*[@id="myPara"]/text()' sample.html 2>/dev/null)
echo "Avsnittet er: $para"

Output:

Tittelen er: Eksempelside
Avsnittet er: Bash kan lese meg.

Dypdykk

Tilbake i tid brukte programmerere regex-baserte verktøy som grep for å skanne HTML, men det var klønete. HTML er ikke regulær – den er kontekstuell. Tradisjonelle verktøy går glipp av dette og kan være utsatt for feil.

Alternativer? Masse. Python med Beautiful Soup, PHP med DOMDocument, JavaScript med DOM-parser – språk med biblioteker designet for å forstå HTMLs struktur.

Å bruke xmllint i bash-skript er solid for enkle oppgaver. Det forstår XML, og ved utvidelse, XHTML. Vanlig HTML kan være uforutsigbar, skjønt. Det følger ikke alltid XMLs strenge regler. xmllint tvinger HTML inn i en XML-modell som fungerer godt for velformet HTML, men kan snuble på rotete greier.

Se Også