บทนำ
Aspose.HTML FOSS สำหรับ Python เป็นไลบรารีโอเพ่นซอร์สใหม่สำหรับการทำงานกับเอกสาร HTML ใน Python. มันจะทำการแปลงมาร์กอัปเป็นโมเดลอ็อบเจกต์เอกสารตามมาตรฐาน, ให้คุณสร้างและแก้ไขต้นไม้ขององค์ประกอบโดยโปรแกรม, และแก้ไข CSS — รวมถึงความจำเพาะ, คำประกาศแบบอินไลน์, และการสืบทอด — ให้เป็นสไตล์ที่คำนวณแล้วซึ่งคุณสามารถอ่านกลับจากองค์ประกอบใด ๆ ได้.
ไลบรารีนี้มุ่งเป้าไปที่สถานการณ์แบ็กเอนด์และเครื่องมือที่ไม่มีหรือไม่ต้องการเบราว์เซอร์: บริการที่ทำความสะอาด HTML ที่เก็บไว้, pipeline ที่ปรับโครงสร้างส่วนของหน้า, และชุดทดสอบที่ตรวจสอบมาร์กอัปที่สร้างขึ้น. มันติดตั้งจาก PyPI เป็น aspose-html-foss, มีลิขสิทธิ์แบบ MIT, และถูกพัฒนาใน Python แท้สำหรับ Python 3.10 ขึ้นไป, ดังนั้นจึงทำงานเช่นเดียวกันบนเครื่องของนักพัฒนา, ตัวรัน CI, และเซิร์ฟเวอร์.
นอกเหนือจาก DOM และแกน CSS, แพ็กเกจนี้มาพร้อมกับบล็อกการสร้างที่ใช้งานได้จริงซึ่งการประมวลผล HTML มักต้องการในที่สุด: ตัว tokenizer และตัวสร้างต้นไม้ของ HTML ที่คุณสามารถควบคุมได้โดยตรง, คลาส URL และ URLSearchParams แบบ WHATWG, และตัวตรวจจับการเข้ารหัสแบบไบต์สตรีม.
สิ่งที่รวมอยู่
สร้างและแก้ไข 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() แก้ไข cascade. ผลลัพธ์เคารพความเฉพาะของ selector — ที่นี่กฎ ID ชนะกฎ class:
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"))
การประกาศแบบอินไลน์และ Cascade
แต่ละองค์ประกอบเปิดเผย 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() ส่งสตรีมโทเคนสำหรับส่วนของมาร์กอัป, TreeBuilder.run() ทำการสร้างต้นไม้ตามมาตรฐาน, และฟังก์ชัน parse_html() ไปจากมาร์กอัปไปยังต้นไม้ในหนึ่งคำสั่ง. สิ่งเหล่านี้เป็นส่วนประกอบเดียวกันที่เส้นทางการแปลงระดับสูงใช้.
URLs และการเข้ารหัสอักขระ
URL.parse() และ URL.can_parse() จัดการการแยกวิเคราะห์และการตรวจสอบ URL แบบ WHATWG, พร้อมกับ URLSearchParams (append(), get(), has(), delete()) สำหรับ query strings. สำหรับไบต์ดิบ, detect_encoding() ตรวจสอบการเข้ารหัส — รวมถึงเครื่องหมายลำดับไบต์ — และคืนข้อความที่ถอดรหัสพร้อมระดับความมั่นใจ, ในขณะที่ 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.