Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตัวแยกวิเคราะห์ html5lib และ lxml ใน Python


html5lib เป็นไลบรารี่ pure-python สำหรับแยกวิเคราะห์ HTML ได้รับการออกแบบมาเพื่อให้สอดคล้องกับข้อกำหนด WHATWG HTML เช่นเดียวกับเว็บเบราว์เซอร์หลักทั้งหมด มันสามารถแยกวิเคราะห์องค์ประกอบเกือบทั้งหมดของเอกสาร HTML แบ่งออกเป็นแท็กและส่วนต่าง ๆ ซึ่งสามารถกรองออกสำหรับกรณีการใช้งานต่างๆ มันแยกวิเคราะห์ข้อความในลักษณะเดียวกับที่ทำโดยเบราว์เซอร์หลัก นอกจากนี้ยังสามารถจัดการกับแท็ก HTML ที่เสียหายและเพิ่มแท็กที่จำเป็นเพื่อให้โครงสร้างสมบูรณ์ นอกจากนี้ยังเขียนด้วยโค้ด python แท้

lxml เป็น parser ที่คล้ายกัน แต่ขับเคลื่อนโดยคุณสมบัติ XML มากกว่า HTML มีการพึ่งพาไลบรารี C ภายนอก เร็วกว่าเมื่อเทียบกับ html5lib

ให้สังเกตความแตกต่างในพฤติกรรมของตัวแยกวิเคราะห์สองตัวนี้โดยนำตัวอย่างแท็กตัวอย่างและดูผลลัพธ์

ตัวอย่าง

from bs4 import BeautifulSoup
html5_structure = BeautifulSoup("<head><li></p>", "html5lib")
print(html5_structure)
lxml_structure = BeautifulSoup("<head><li></p>", "lxml")
print(lxml_structure)

การรันโค้ดด้านบนทำให้เราได้ผลลัพธ์ดังต่อไปนี้

ผลลัพธ์

<html><head></head><body><li><p></p></li></body></html>
<html><head></head><body><li></li></body></html>

ดังที่เราเห็น html5lib สร้างเอกสาร html ที่สมบูรณ์ยิ่งขึ้นโดยการรวม

แท็ก ไลบรารี lxml เน้นไปที่โครงสร้าง xml มากกว่า และละเว้นแท็กทั้งหมด