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

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

Làm Thế Nào:

Hãy sử dụng Python để “cướp” một số dữ liệu từ một mẫu HTML bằng cách sử dụng thư viện BeautifulSoup, làm cho việc phân tích cú pháp trở nên dễ dàng. Nếu bạn chưa cài đặt gói, hãy cài đặt bằng pip install beautifulsoup4.

from bs4 import BeautifulSoup

# Hãy tưởng tượng đây là HTML của bạn
html_doc = """
<html>
<head>
    <title>Câu chuyện của Chú Chuột đồng</title>
</head>
<body>
    <p class="title">
        <b>Câu chuyện của Chú Chuột đồng</b>
    </p>
    <p class="story">Ngày xửa ngày xưa có ba chị em gái; và tên của họ là
        <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
        <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> và
        <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
        và họ sống dưới đáy một giếng.</p>
</body>
</html>
"""

# Tạo Soup
soup = BeautifulSoup(html_doc, 'html.parser')

# Tìm thẻ tiêu đề
title_tag = soup.title
print("Tiêu đề của câu chuyện:", title_tag.string)

# Tìm tất cả thẻ 'a' với class là 'sister'
sister_tags = soup.find_all('a', class_='sister')
print("Tên và đường dẫn URL của các chị em:")
for sister in sister_tags:
    print(f"- Tên: {sister.string}, URL: {sister['href']}")

Kết quả sẽ là:

Tiêu đề của câu chuyện: Câu chuyện của Chú Chuột đồng
Tên và đường dẫn URL của các chị em:
- Tên: Elsie, URL: http://example.com/elsie
- Tên: Lacie, URL: http://example.com/lacie
- Tên: Tillie, URL: http://example.com/tillie

Sâu Hơn Nữa

Trong những ngày đầu của web, bạn sẽ phân tích cú pháp HTML bằng regex và rất nhiều hy vọng. Điều này rất lộn xộn bởi vì HTML không phải lúc nào cũng gọn gàng và dễ đoán. Vào cuộc, các thư viện như BeautifulSoup, điều hướng cấu trúc cây của HTML, cung cấp một cách nhẹ nhàng để cắt và chia dữ liệu.

Cũng có các phương tiện thay thế như lxmlhtml.parser, mà chính BeautifulSoup có thể sử dụng như là bộ phân tích cú pháp. lxml nhanh hơn nhưng kém tha thứ với HTML xấu, trong khi html.parser chậm hơn nhưng không soi mói về các thẻ hỏng.

Phía sau, những thư viện này xây dựng một cây phân tích cú pháp, biến các thẻ thành những đối tượng mà bạn có thể tương tác. BeautifulSoup như một giao diện thân thiện với những bộ phân tích cú pháp này, dịch các câu hỏi của bạn—như “Tiêu đề là gì?” hoặc “Có liên kết nào ở đây không?"—thành các hành động trên cây.

Xem Thêm