1. Sản Phẩm
  2.   Aspose.HTML
  3.   Aspose.HTML FOSS for Python

Aspose.HTML FOSS cho Python

Phân tích HTML thành DOM dựa trên tiêu chuẩn, áp dụng CSS, và tính toán kiểu dáng từ Python — miễn phí, mã nguồn mở, và thuần Python.

Thư viện Python mã nguồn mở cho xử lý HTML

Aspose.HTML FOSS for Python là một thư viện miễn phí, mã nguồn mở để làm việc với các tài liệu HTML trong các ứng dụng Python. Cài đặt nó bằng một lệnh git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git duy nhất và bắt đầu phân tích markup thành mô hình đối tượng tài liệu, xây dựng và chỉnh sửa cây phần tử, gắn các stylesheet CSS, giải quyết các kiểu đã tính toán, và làm việc với URL và mã ký tự — tất cả trong Python thuần túy mà không cần phụ thuộc vào trình duyệt.

Thư viện cung cấp một API hướng chuẩn được xây dựng quanh HTMLDocument, Document, Element và CSSStyleSheet. Phân tích markup bằng HTMLDocument.parse(), tạo và kết nối các nút bằng Document.create_element() và append_child(), tra cứu các phần tử bằng get_element_by_id(), áp dụng kiểu cho chúng qua CSSStyleSheet.replace_sync() và khai báo style ở mức phần tử, và đọc kết quả lại bằng Element.get_computed_style(). Các khối xây dựng cấp thấp — HTML Tokenizer, TreeBuilder, URL và URLSearchParams theo kiểu WHATWG, và bộ phát hiện luồng byte detect_encoding() — đều sẵn có khi bạn cần kiểm soát trực tiếp.

Aspose.HTML FOSS được cấp phép MIT và được triển khai bằng Python thuần túy, yêu cầu Python 3.10 trở lên. Nó chạy giống hệt trên Windows, Linux và macOS — bao gồm cả các runner CI, container Docker và môi trường serverless. Đối với họ sản phẩm doanh nghiệp, xem Aspose.HTML — Enterprise Product Family.

HTML Phân tích cú pháp và Thao tác DOM

  • Phân tích các trang hoàn chỉnh bằng HTMLDocument.parse() hoặc các đoạn bằng HTMLDocument.parse_fragment()
  • Xây dựng tài liệu một cách lập trình bằng Document.create_element() và append_child()
  • Tìm nút bằng Document.get_element_by_id() và đọc các thuộc tính markup qua Element.get_attribute()
  • Đặt thuộc tính bằng Element.set_attribute() và gán văn bản qua Node.text_content
  • Chuyển đổi bất kỳ nhánh con nào trở lại markup bằng hàm serialise()

Ai Sử Dụng Xử Lý DOM

  • Dịch vụ backend dọn dẹp hoặc ghi lại HTML do người dùng gửi trước khi lưu trữ
  • Các pipeline nội dung trích xuất hoặc tái cấu trúc các đoạn trang ở quy mô lớn
  • Bộ kiểm thử xác nhận cấu trúc markup được tạo ra trong CI

CSS Stylesheets và Computed Styles

  • Phân tích văn bản stylesheet bằng CSSStyleSheet.replace_sync() và gắn nó thông qua Document.attach_style_sheet()
  • Đặt các khai báo nội tuyến thông qua thuộc tính style của phần tử bằng CSSStyleDeclaration.set_property()
  • Giải quyết cascade — tính đặc thù, quy tắc nội tuyến vs tác giả và kế thừa — bằng Element.get_computed_style()
  • Đọc lại các giá trị đã giải quyết bằng CSSStyleDeclaration.get_property_value()

Ai Sử Dụng Tính Toán Kiểu

  • Công cụ email và bản tin kiểm tra các kiểu hiệu quả trước khi gửi
  • HTML sanitizers mà cần biết kiểu mà một phần tử thực sự được hiển thị
  • Các nhà phát triển gỡ lỗi hành vi cascade và specificity bên ngoài trình duyệt

Bộ tách từ và Xây dựng Cây

  • Điều khiển bộ tokenizer HTML trực tiếp bằng Tokenizer.tokenize() hoặc Tokenizer.tokenize_fragment()
  • Thực hiện xây dựng cây dựa trên tiêu chuẩn bằng TreeBuilder.run()
  • Phân tích markup trực tiếp thành cây bằng hàm parse_html()

Ai Sử Dụng Phân Tích Cấp Thấp

  • Linters và các bộ phân tích kiểm tra luồng token thay vì cây đã hoàn thiện
  • Các công cụ cần xử lý lỗi tùy chỉnh trong quá trình khôi phục markup bị lỗi
  • Các dự án giáo dục nghiên cứu cách hoạt động của việc phân tích HTML dựa trên tiêu chuẩn

URL và Mã ký tự

  • Phân tích và xác thực URL bằng URL.parse() và URL.can_parse()
  • Đọc và chỉnh sửa chuỗi truy vấn bằng URLSearchParams — append(), get(), has(), delete()
  • Phát hiện mã hoá luồng byte (BOM và dò tìm nội dung) bằng detect_encoding()
  • Chuẩn hoá nhãn mã hoá thành các tên chuẩn bằng get_canonical_name()

Ai Sử Dụng Công Cụ URL và Mã Hóa

  • Các trình thu thập và fetcher phải giải quyết và loại bỏ trùng lặp URL một cách đáng tin cậy
  • Các pipeline nhập liệu xử lý tài liệu legacy với các mã hóa hỗn hợp
  • Dịch vụ phân tích hoặc ghi lại các tham số truy vấn phía máy chủ

Xây dựng DOM và Giải quyết Cascade CSS

Tạo một tài liệu, gắn một stylesheet, và đọc kiểu đã tính toán — bộ chọn ID thắng so với quy tắc lớp:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)
style = el.get_computed_style()
print(style.get_property_value("color"))

Kiểu nội tuyến được ưu tiên

Các khai báo nội tuyến có độ ưu tiên cao hơn so với các quy tắc stylesheet của tác giả:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)
inline = el.style
inline.set_property("color", "blue")
print(el.get_computed_style().get_property_value("color"))

Phát hiện mã ký tự từ byte

Phát hiện mã hoá của một luồng byte thô, bao gồm BOM, và nhận lại văn bản đã giải mã:

from aspose_html.encoding.detection import detect_encoding
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)

Câu Hỏi Thường Gặp

Giấy phép nào Aspose.HTML FOSS for Python sử dụng?

Bản quyền MIT — việc sử dụng thương mại, sửa đổi và phân phối lại đều được phép; yêu cầu duy nhất là giữ thông báo bản quyền khi sao chép đáng kể.

Phiên bản Python nào được hỗ trợ, và làm thế nào để cài đặt?

Python 3.10 trở lên. Cài đặt bằng git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git — triển khai hoàn toàn Python mà không có phụ thuộc gốc.

Làm sao tôi có thể phân tích HTML thành một tài liệu?

Sử dụng HTMLDocument.parse() cho các trang hoàn chỉnh hoặc HTMLDocument.parse_fragment() cho markup một phần; Document là nhà máy để xây dựng cây một cách lập trình.

Liệu cascade CSS có xử lý độ đặc hiệu và !important một cách chính xác không?

Có — các giá trị được tính toán tuân theo độ đặc hiệu của bộ chọn, khai báo nội tuyến vượt trội hơn các quy tắc của tác giả, các quy tắc tác giả !important vượt trội hơn các khai báo nội tuyến không quan trọng, và kế thừa diễn ra từ cha sang con.

Thư viện có render các trang hay chuyển đổi sang các định dạng khác?

Không. Bản phát hành hiện tại tập trung vào việc phân tích cú pháp, thao tác DOM, tính toán kiểu CSS, cấu trúc bố cục, URL và mã hoá — không chuyển đổi định dạng hoặc hiển thị hình ảnh/PDF.

JavaScript có được thực thi tự động trong quá trình phân tích cú pháp không?

Không. Phân tích cú pháp không bao giờ chạy script; việc đánh giá là rõ ràng và phải đồng ý thông qua JSContext với việc tải mô-đun được kiểm soát bởi ModuleRegistry và ModuleLoadPolicy.

  

Tài Nguyên Hỗ Trợ và Học Tập

 Tiếng Việt