วิธีใช้ HTML Tokenizer ใน Python

วิธีใช้ HTML Tokenizer ใน Python

tokenizer ใน Aspose.HTML FOSS สำหรับ Python แปลง markup เป็นสตรีมของ tokens ที่กำหนดโดยมาตรฐาน — มีประโยชน์สำหรับ linters, sanitizer pre-passes, และเครื่องมือใด ๆ ที่ตรวจสอบ markup ด้านล่างระดับ tree. คู่มือนี้ครอบคลุม entry points ของ tokenizing, token vocabulary, และ states, โดยใช้ pip สำหรับการติดตั้ง.

คู่มือแบบขั้นตอนต่อขั้นตอน

ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

ขั้นตอนที่ 2: นำเข้า Classes ที่จำเป็น

from aspose_html.tokenizer import Tokenizer, TokenizerState

ขั้นตอนที่ 3: Tokenize Markup

Tokenizer.tokenize() ประมวลผลอินพุตทั้งหมด; Tokenizer.tokenize_fragment() ใช้กฎส่วนย่อย. สตรีมมีโทเคนที่มีประเภท: StartTagToken และ EndTagToken (พร้อมแอตทริบิวต์), CharacterToken สำหรับข้อความ, CommentToken, DoctypeToken, และโทเคนสุดท้าย EofToken.


ขั้นตอนที่ 4: ควบคุมสถานะเริ่มต้น

TokenizerState สะท้อนเครื่องจักรสถานะของสเปค. สำหรับอินพุตที่ขึ้นกับบริบท — เนื้อหาที่จะปรากฏภายใน <script> หรือ <style> — ตั้งค่าสถานะเริ่มต้นที่ตรงกันด้วย Tokenizer.set_state() ก่อนทำการ tokenizing.


ขั้นตอนที่ 5: แก้ไขอ้างอิงอักขระ

อ้างอิงอักขระแบบชื่อและตัวเลขจะถูกแก้ไขผ่าน resolve_named_char_ref(), resolve_numeric_char_ref(), และ find_named_char_ref_match() — รองรับโดยตาราง named-reference ทั้งหมด.

ปัญหาทั่วไปและวิธีแก้

Script หรือ style content tokenizes as markup. สถานะเริ่มต้นไม่ถูกต้องสำหรับบริบท; ตั้งค่าโดยใช้ set_state().

Entities ปรากฏว่าไม่ถูกแก้ไขใน output. Raw text consumers ต้องรัน character-reference resolvers; resolution เป็นแบบชัดเจนในระดับนี้.

Fragment output แตกต่างจากการ parse ทั้งหมด. กฎการ tokenization ของ Fragment ถูกออกแบบให้แตกต่าง — ใช้ tokenize() สำหรับเอกสารเต็ม.

คำถามที่พบบ่อย

ฉันสามารถใช้ token โดยไม่ต้องสร้าง tree ได้หรือไม่?

ใช่ — token stream เป็นผลลัพธ์สาธารณะ ซึ่งไม่ขึ้นกับการสร้าง tree.

ประเภท token ใดบ้างที่มีอยู่?

StartTagToken, EndTagToken, CharacterToken, CommentToken, DoctypeToken, และ EofToken.

สถานะ tokenizer เป็นแบบมาตรฐานหรือไม่?

ใช่ — TokenizerState จำลองเครื่องจักรสถานะของสเปค.

ดูเพิ่มเติม

 ภาษาไทย