Câu hỏi thường gặp

Câu hỏi thường gặp

Cấp phép & Mã nguồn mở

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

Thư viện được phát hành theo Giấy phép MIT. Văn bản đầy đủ được cung cấp dưới dạng LICENSE tệp trong kho lưu trữ GitHub.

Tôi có thể sử dụng nó trong các sản phẩm thương mại không?

Có. Giấy phép MIT cho phép sử dụng thương mại, sửa đổi, phân phối lại và cấp phép phụ. Yêu cầu duy nhất là giữ lại thông báo bản quyền và văn bản giấy phép kèm theo các bản sao đáng kể.

Cài đặt & Yêu cầu

Làm thế nào để tôi cài đặt thư viện, và các phiên bản Python nào được hỗ trợ?

Cài đặt bằng git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git. Thư viện yêu cầu Python 3.10 trở lên; phiên bản hiện tại là 0.1.0.

Có phụ thuộc gốc nào không?

Không. Cài đặt hoàn toàn thuần Python — không có engine trình duyệt, không có phần mở rộng biên dịch — vì vậy nó hoạt động giống hệt trên Windows, Linux và macOS, bao gồm cả các runner CI và container.

API Usage

Làm thế nào để tôi phân tích HTML thành một tài liệu?

Sử dụng HTMLDocument.parse() cho các trang đầy đủ hoặc HTMLDocument.parse_fragment() cho markup một phần. Đối với việc xây dựng theo chương trình, Document là nhà máy nút:

from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "bar")
doc.append_child(el)

Làm thế nào để áp dụng CSS và đọc kiểu dáng kết quả?

Phân tích văn bản stylesheet bằng CSSStyleSheet.replace_sync(), gắn nó bằng Document.attach_style_sheet(), và đọc kết quả đã giải quyết bằng Element.get_computed_style():

from aspose_html.cssom import CSSStyleSheet
sheet = CSSStyleSheet()
sheet.replace_sync("#bar { color: blue }")
doc.attach_style_sheet(sheet)
print(el.get_computed_style().get_property_value("color"))

Liệu cascade có xử lý độ đặc hiệu và !important đúng không?

Có. Các giá trị đã tính toán tuân theo độ đặc hiệu của selector (ID thắng class, class thắng type), các khai báo nội tuyến vượt trội hơn quy tắc của tác giả, và các quy tắc tác giả !important vượt qua các khai báo nội tuyến không có !important. Kế thừa diễn ra từ cha sang con cho các thuộc tính có thể kế thừa.

Tôi có thể sử dụng tokenizer và tree builder trực tiếp không?

Có — Tokenizer.tokenize() phát ra luồng token chuẩn, TreeBuilder.run() thực hiện việc xây dựng cây, và parse_html() gói toàn bộ quy trình trong một lời gọi duy nhất.

Làm thế nào để làm việc với URL và mã hoá ký tự?

URL.parse() và URL.can_parse() cung cấp xử lý URL kiểu WHATWG với URLSearchParams cho chuỗi truy vấn. Đối với byte thô, detect_encoding() trả về mã hoá, mức độ tin cậy và văn bản đã giải mã.

Các hạn chế đã biết

Có API nào có mặt nhưng chưa được triển khai không?

Một số thành viên được khai báo nhưng hiện chưa hoạt động, bao gồm CSSRule.type, CSSRule.css_text và HTMLImageElement.decode. Tập tin limitations.md trong mô hình kiến thức theo dõi chúng; tránh dựa vào chúng.

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

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á. Nó không cung cấp chuyển đổi định dạng hoặc render ảnh/PDF.

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

Không. Quá trình phân tích cú pháp không bao giờ chạy script. Việc đánh giá script là tường minh và phải đồng ý thông qua JSContext, với việc tải mô-đun được điều khiển bởi ModuleRegistry và ModuleLoadPolicy.

Xem thêm

 Tiếng Việt