Phân Tích Cú Pháp HTML

Bash:
Phân Tích Cú Pháp HTML

Cách thực hiện:

Bash không phải là công cụ đi đầu để phân tích cú pháp HTML, nhưng có thể thực hiện được bằng các công cụ như grep, awk, sed hoặc các tiện ích bên ngoài như lynx. Để đạt được sự ổn định, chúng tôi sẽ sử dụng xmllint từ gói libxml2.

# Cài đặt xmllint nếu cần
sudo apt-get install libxml2-utils

# Mẫu HTML
cat > sample.html <<EOF
<html>
<head>
  <title>Trang Mẫu</title>
</head>
<body>
  <h1>Xin chào, Bash!</h1>
  <p id="myPara">Bash có thể đọc tôi.</p>
</body>
</html>
EOF

# Phân tích Title
title=$(xmllint --html --xpath '//title/text()' sample.html 2>/dev/null)
echo "Tiêu đề: $title"

# Trích Xuất Đoạn văn bằng ID
para=$(xmllint --html --xpath '//*[@id="myPara"]/text()' sample.html 2>/dev/null)
echo "Nội dung đoạn văn: $para"

Kết quả:

Tiêu đề: Trang Mẫu
Nội dung đoạn văn: Bash có thể đọc tôi.

Tìm hiểu Sâu

Ngày xưa, lập trình viên sử dụng các công cụ dựa trên regex như grep để quét HTML, nhưng đó là cách làm vụng về. HTML không phải là cố định - nó là ngữ cảnh. Các công cụ truyền thống không nhận ra điều này và có thể dễ gặp lỗi.

Có lựa chọn khác không? Rất nhiều. Python với Beautiful Soup, PHP với DOMDocument, JavaScript với các trình phân tích cú pháp DOM - những ngôn ngữ có thư viện được thiết kế để hiểu cấu trúc của HTML.

Sử dụng xmllint trong kịch bản bash là vững chắc cho các tác vụ đơn giản. Nó hiểu XML, và do đó, XHTML. HTML thông thường có thể không dễ đoán trước. Nó không luôn luôn tuân theo các quy tắc nghiêm ngặt của XML. xmllint buộc HTML vào một mô hình XML, điều này hoạt động tốt cho HTML được tạo đúng cách nhưng có thể gặp vấn đề với những thứ lộn xộn.

Xem Thêm