Cách phân tích HTML trong Python
Aspose.HTML FOSS cho Python phân tích markup bằng thuật toán xây dựng cây tiêu chuẩn: HTMLDocument.parse() cho các trang đầy đủ, HTMLDocument.parse_fragment() cho các đoạn trích, và các lớp phần tử có kiểu (HTMLElement và các lớp con của nó) trong kết quả. Hướng dẫn này bao gồm các điểm vào của quá trình phân tích và xác minh đầu ra qua DOM, sử dụng pip để cài đặt.
Hướng dẫn từng bước
Bước 1: Cài đặt gói
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Bước 2: Nhập các lớp cần thiết
from aspose_html.html_document import HTMLDocument
from aspose_html.dom import DocumentBước 3: Chọn điểm vào phân tích phù hợp
HTMLDocument.parse() thực hiện việc xây dựng cây toàn bộ tài liệu với khả năng khôi phục lỗi tiêu chuẩn; HTMLDocument.parse_fragment() áp dụng thuật toán đoạn cho markup một phần; HTMLDocument.load() đọc từ một nguồn. Các phần tử đã phân tích xuất hiện có kiểu — một <a> là một HTMLAnchorElement, một <input> là một HTMLInputElement.
Bước 4: Xác minh đầu ra qua DOM
Kết quả đã phân tích là một cây DOM bình thường — các API tra cứu và thuộc tính giống nhau vẫn áp dụng. Việc xây dựng cấu trúc tương đương bằng chương trình cho thấy bề mặt chung:
doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "content")
doc.append_child(el)
print(doc.get_element_by_id("content").has_child_nodes())Bước 5: Tiếp tục với kiểu dáng hoặc cấu trúc
Gắn các stylesheet và đọc các kiểu đã tính toán, hoặc sử dụng các trợ giúp chèn Element (insert_adjacent_html(), insert_adjacent_text()) cho các chỉnh sửa cục bộ — đầu ra của việc phân tích cung cấp cho mọi lớp khác.
Các vấn đề thường gặp và cách khắc phục
Markup một phần được thêm các thẻ html và body. parse() áp dụng các quy tắc toàn tài liệu; sử dụng parse_fragment() cho các đoạn trích.
Markup sai cấu trúc được phân tích mà không có lỗi. Đó là hành vi theo tiêu chuẩn — quá trình xây dựng cây định nghĩa cách phục hồi cho mọi trường hợp lỗi thay vì ném ra lỗi.
Nội dung bảng xuất hiện bên ngoài bảng của nó. Việc nuôi dưỡng nội dung bảng sai vị trí là một phần của thuật toán; hãy sửa cấu trúc lồng nhau của nguồn.
Câu hỏi thường gặp
Các phần tử đã phân tích có kiểu không?
Có — quá trình phân tích tạo ra phân cấp HTMLElement: các điều khiển biểu mẫu (HTMLFormElement, HTMLInputElement), nội dung nhúng (HTMLImageElement, HTMLCanvasElement), điều hướng (HTMLAnchorElement), và hơn nữa.
Tôi có thể điều khiển pipeline phân tích ở mức thấp hơn không?
Có — Tokenizer và TreeBuilder là công khai, với parse_html() là lớp bao gọi một lần.
Quá trình phân tích có thực thi script không?
Không. Việc đánh giá script là rõ ràng và riêng biệt thông qua JSContext.