Bash:
HTML:n jäsennys
Kuinka:
Bash ei ole ensisijainen työkalu HTML:n jäsentämiseen, mutta se on mahdollista tehdä työkaluilla kuten grep, awk, sed tai ulkoisilla apuohjelmilla kuten lynx. Robustisuuden vuoksi käytämme xmllintiä libxml2-paketista.
# Asenna xmllint tarvittaessa
sudo apt-get install libxml2-utils
# Esimerkki HTML
cat > sample.html <<EOF
<html>
<head>
<title>Esimerkkisivu</title>
</head>
<body>
<h1>Hei, Bash!</h1>
<p id="myPara">Bash voi lukea minut.</p>
</body>
</html>
EOF
# Jäsennä otsikko
title=$(xmllint --html --xpath '//title/text()' sample.html 2>/dev/null)
echo "Otsikko on: $title"
# Poimi kappale ID:n perusteella
para=$(xmllint --html --xpath '//*[@id="myPara"]/text()' sample.html 2>/dev/null)
echo "Kappaleen sisältö on: $para"Tuloste:
Otsikko on: Esimerkkisivu
Kappaleen sisältö on: Bash voi lukea minut.Syväsukellus
Aikaisemmin ohjelmoijat käyttivät regex-pohjaisia työkaluja kuten grep HTML:n skannaamiseen, mutta se oli kömpelöä. HTML ei ole säännönmukaista - se on kontekstuaalista. Perinteiset työkalut eivät ota tätä huomioon ja voivat olla virhealttiita.
Vaihtoehtoja? Runsain mitoin. Python kauniin keiton (Beautiful Soup) kanssa, PHP DOMDocumentin kanssa, JavaScript DOM-jäsentäjien kanssa - kielet, joilla on kirjastoja, jotka on suunniteltu ymmärtämään HTML:n rakennetta.
xmllintin käyttö bash-skripteissä on vankkaa yksinkertaisiin tehtäviin. Se ymmärtää XML:n, ja sitä kautta XHTML:n. Säännöllinen HTML voi olla arvaamatonta, kuitenkin. Se ei aina noudata XML:n tiukkoja sääntöjä. xmllint pakottaa HTML:n XML-malliin, joka toimii hyvin muodollisesti oikein muotoillun HTML:n kanssa, mutta voi kompastua sotkuisiin tapauksiin.
Katso myös
- W3Schools - HTML DOM Jäsentäjä: Avaa HTML DOM:n saloja.
- MDN Web Docs - XML:n jäsentäminen ja serialisointi: XML:n jäsentämisen periaatteita, jotka pätevät XHTML:ssä.
- Beautiful Soup -dokumentaatio: Python-kirjasto HTML:n jäsentämiseen.
- libxml2 -dokumentaatio: Tietoja
xmllintistä ja liittyvistä XML-työkaluista.