Computer >> Máy Tính >  >> Lập trình >> Python

trình phân tích cú pháp html5lib và lxml trong Python

html5lib là một thư viện thuần python để phân tích cú pháp HTML. Nó được thiết kế để phù hợp với đặc điểm kỹ thuật HTML của CÁI GÌ, như được triển khai bởi tất cả các trình duyệt web chính. Nó có thể phân tích cú pháp hầu như tất cả các phần tử của một tài liệu HTML, chia nhỏ nó thành các thẻ và phần khác nhau có thể được lọc ra cho các trường hợp sử dụng khác nhau. Nó phân tích cú pháp văn bản giống như cách được thực hiện bởi các trình duyệt chính. Nó cũng có thể xử lý các thẻ HTML bị hỏng và thêm một số thẻ cần thiết để hoàn thiện cấu trúc. Ngoài ra, nó được viết bằng mã python thuần túy.

lxml cũng là một trình phân tích cú pháp tương tự nhưng được điều khiển bởi các tính năng của XML hơn là HTML. Nó có sự phụ thuộc vào các thư viện C bên ngoài. Nó nhanh hơn so với html5lib.

Hãy quan sát sự khác biệt về hành vi của hai trình phân tích cú pháp này bằng cách lấy ví dụ về thẻ mẫu và xem kết quả.

Ví dụ

from bs4 import BeautifulSoup
html5_structure = BeautifulSoup("<head><li></p>", "html5lib")
print(html5_structure)
lxml_structure = BeautifulSoup("<head><li></p>", "lxml")
print(lxml_structure)

Chạy đoạn mã trên cho chúng ta kết quả sau

Đầu ra

<html><head></head><body><li><p></p></li></body></html>
<html><head></head><body><li></li></body></html>

Như chúng ta có thể thấy html5lib tạo ra tài liệu html hoàn chỉnh hơn bằng cách kết hợp

nhãn. Thư viện lxml tập trung hơn vào cấu trúc xml like và hoàn toàn bỏ qua thẻ.