Εισαγωγή
Aspose.HTML FOSS για Python είναι μια νέα βιβλιοθήκη ανοιχτού κώδικα για εργασία με έγγραφα HTML σε Python. Αναλύει τη σήμανση σε ένα πρότυπο μοντέλο αντικειμένου εγγράφου, σας επιτρέπει να δημιουργείτε και να τροποποιείτε δέντρα στοιχείων προγραμματιστικά, και επιλύει το CSS — συμπεριλαμβανομένης της ειδικότητας, των ενσωματωμένων δηλώσεων και της κληρονομικότητας — σε υπολογισμένα στυλ που μπορείτε να διαβάσετε από οποιοδήποτε στοιχείο.
Η βιβλιοθήκη στοχεύει σε σενάρια backend και εργαλείων όπου ένας φυλλομετρητής δεν είναι διαθέσιμος ή δεν επιθυμείται: υπηρεσίες που καθαρίζουν αποθηκευμένα HTML, αγωγούς που ανασχηματίζουν τμήματα σελίδων και σύνολα δοκιμών που ελέγχουν τη δημιουργημένη σήμανση. Εγκαθίσταται από το PyPI ως aspose-html-foss, είναι αδειοδοτημένη υπό MIT, και υλοποιείται σε καθαρό Python για Python 3.10 και μεταγενέστερα, ώστε να συμπεριφέρεται ομοίως σε μηχανές προγραμματιστών, CI runners και διακομιστές.
Πέρα από τον πυρήνα DOM και CSS, το πακέτο παρέχει πρακτικά δομικά στοιχεία που η επεξεργασία HTML συνήθως απαιτεί οπωσδήποτε: έναν HTML tokenizer και δημιουργό δέντρου που μπορείτε να ελέγχετε άμεσα, κλάσεις URL και URLSearchParams σε στυλ WHATWG, και έναν ανιχνευτή κωδικοποίησης ροής byte.
Τι περιλαμβάνεται
Δημιουργία και τροποποίηση του DOM
Η στρώση DOM είναι χτισμένη γύρω από τα Document, Element και Node. Δημιουργήστε στοιχεία με το Document.create_element(), συνδέστε τα μεταξύ τους με το append_child(), ορίστε χαρακτηριστικά σήμανσης με το Element.set_attribute(), και αναζητήστε ξανά τους κόμβους με το Document.get_element_by_id(). Πλήρεις σελίδες και τμήματα αναλύονται μέσω των HTMLDocument.parse() και HTMLDocument.parse_fragment().
from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)
Εφαρμογή Φύλλων Στυλ και Ανάγνωση Υπολογισμένων Στυλ
CSSStyleSheet.replace_sync() αναλύει το κείμενο του φύλλου στυλ, Document.attach_style_sheet() το ενεργοποιεί, και Element.get_computed_style() επιλύει την αλυσίδα. Το αποτέλεσμα τιμά τη συγκεκριμενοποίηση των επιλεγέων — εδώ ο κανόνας ID υπερτερεί του κανόνα κλάσης:
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"))
Ενσωματωμένες Δηλώσεις και η Αλυσίδα
Κάθε στοιχείο εκθέτει ένα ζωντανό CSSStyleDeclaration μέσω της ιδιότητας style. Οι ενσωματωμένες δηλώσεις που ορίζονται με set_property() έχουν υψηλότερη συγκεκριμενοποίηση από τους κανόνες του φύλλου στυλ του συγγραφέα, και το get_computed_style() το αντικατοπτρίζει:
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"))
Tokenizer και Tree Builder
Όταν χρειάζεστε μεγαλύτερο έλεγχο από ένα ολοκληρωμένο δέντρο, τα κατώτερα στρώματα είναι δημόσια API. Τα Tokenizer.tokenize() και Tokenizer.tokenize_fragment() εκδίδουν τη ροή token για ένα τμήμα σήμανσης, το TreeBuilder.run() εκτελεί κατασκευή δέντρου βάσει προτύπων, και η συνάρτηση parse_html() μετατρέπει τη σήμανση σε δέντρο με μία κλήση. Αυτά είναι τα ίδια συστατικά που χρησιμοποιεί η υψηλού επιπέδου διαδρομή ανάλυσης.
Διευθύνσεις URL και Κωδικοποιήσεις Χαρακτήρων
URL.parse() και URL.can_parse() διαχειρίζονται την ανάλυση και επικύρωση URL σε στυλ WHATWG, με URLSearchParams (append(), get(), has(), delete()) για τις αλφαριθμητικές παραμέτρους. Για ακατέργαστα bytes, το detect_encoding() ανιχνεύει την κωδικοποίηση — συμπεριλαμβανομένων των σημείων σειράς byte — και επιστρέφει το αποκωδικοποιημένο κείμενο μαζί με επίπεδο εμπιστοσύνης, ενώ το get_canonical_name() κανονικοποιεί τις ετικέτες κωδικοποίησης:
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)
Γρήγορη Έναρξη
Εγκατάσταση από PyPI:
asposefoss/html is not yet published — build from source until it ships. See the project README for build instructions.Στη συνέχεια, δημιουργήστε ένα έγγραφο, μορφοποιήστε το και διαβάστε το υπολογισμένο αποτέλεσμα:
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "bar")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("#bar { color: blue }")
doc.attach_style_sheet(sheet)
style = el.get_computed_style()
print(style.get_property_value("color"))
Ανοιχτός Κώδικας & Αδειοδότηση
Aspose.HTML FOSS για Python κυκλοφορεί υπό την άδεια MIT, έτσι η εμπορική χρήση, η τροποποίηση και η αναδιανομή επιτρέπονται. Ο πηγαίος κώδικας είναι διαθέσιμος στο GitHub και το πακέτο δημοσιεύεται στο PyPI ως aspose-html-foss.