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
- W3Schools - Trình Phân tích cú pháp HTML DOM: Làm rõ về HTML DOM.
- MDN Web Docs - Phân tích cú pháp và tuần tự hóa XML: Đối với các nguyên tắc phân tích cú pháp XML áp dụng cho XHTML.
- Tài liệu Beautiful Soup: Thư viện Python cho phân tích cú pháp HTML.
- Tài liệu libxml2: Chi tiết về
xmllint
và các công cụ XML liên quan.