Bash:
Аналіз HTML

Як робити:

Bash не є основним інструментом для парсингу HTML, але це можливо засобами на кшталт grep, awk, sed або зовнішніми утилітами на кшталт lynx. Для надійності ми використаємо xmllint з пакунка libxml2.

# Встановіть xmllint за потреби
sudo apt-get install libxml2-utils

# Зразок HTML
cat > sample.html <<EOF
<html>
<head>
  <title>Sample Page</title>
</head>
<body>
  <h1>Привіт, Bash!</h1>
  <p id="myPara">Bash може мене читати.</p>
</body>
</html>
EOF

# Парсити заголовок
title=$(xmllint --html --xpath '//title/text()' sample.html 2>/dev/null)
echo "Заголовок: $title"

# Витягнути параграф за ID
para=$(xmllint --html --xpath '//*[@id="myPara"]/text()' sample.html 2>/dev/null)
echo "Вміст параграфа: $para"

Вивід:

Заголовок: Sample Page
Вміст параграфа: Bash може мене читати.

Поглиблений огляд

Раніше програмісти використовували інструменти на базі regex, такі як grep, для сканування HTML, але це було громіздко. HTML не є регулярним - він контекстуальний. Традиційні інструменти промахуються через це та можуть бути схильні до помилок.

Альтернативи? їх багато. Python із Beautiful Soup, PHP із DOMDocument, JavaScript із DOM-парсерами — мови з бібліотеками, розробленими для розуміння структури HTML.

Використання xmllint у bash-скриптах є міцним для простих завдань. Він розуміє XML і, відповідно, XHTML. Звичайний HTML може бути непередбачуваним, однак. Він не завжди слідує строгим правилам XML. xmllint примушує HTML слідувати моделі XML, що добре працює для правильно сформованого HTML, але може спотикатись на погано організованому.

Див. також