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å
- W3Schools - HTML DOM Parser: Demystifiserer HTML DOM.
- MDN Web Docs - Parsing og serialisering av XML: For XML-parsingsprinsipper som gjelder for XHTML.
- Beautiful Soup-dokumentasjon: Et Python-bibliotek for parsing av HTML.
- libxml2-dokumentasjon: Detaljer om
xmllint
og relaterte XML-verktøy.