2012-02-17 11 views

उत्तर

13

में libxml2 page आप इस नोट देख सकते हैं:

नोट अजगर शुद्धतावादी के कुछ पायथन बाइंडिंग के डिफ़ॉल्ट सेट नापसंद करते हैं, न कि शिकायत की तुलना में है कि मैं सुझाव है कि वे के लिए अधिक pythonic बाइंडिंग lxml पर एक नजर है libxml2 और libxslt और मेलिंग सूची की जांच करें।

और lxml पेज इस एक दूसरे में:

lxml एक्सएमएल टूलकिट एक pythonic सी पुस्तकालयों libxml2 और libxslt के लिए बाध्यकारी है। यह अद्वितीय है कि यह मूल पुस्तकालय एपीआई की सादगी के साथ इन पुस्तकालयों की गति और एक्सएमएल सुविधा पूर्णता को जोड़ती है, जो अधिकतर संगत लेकिन प्रसिद्ध एलिमेंट ट्री एपीआई से बेहतर है।

तो अनिवार्य रूप से, lxml साथ आप बिल्कुल वैसा ही कार्यक्षमता, मिलता है लेकिन मानक पुस्तकालय में ElementTree पुस्तकालय (के साथ संगत आ pythonic एपीआई के साथ ऐसा इसका मतलब मानक पुस्तकालय प्रलेखन lxml उपयोग करने के लिए सीखने के लिए उपयोगी हो सकता है)। यही कारण है कि lxmllibxml2 से अधिक पसंद किया जाता है (भले ही अंतर्निहित कार्यान्वयन एक ही है)।

संपादित करें: ऐसा कहा गया है कि, अन्य उत्तरों के रूप में, विकृत HTML को पार्स करने के लिए आपका सर्वोत्तम विकल्प BeautifulSoup का उपयोग करना है।

आप कुछ भी निर्दिष्ट नहीं करते हैं, तो आप सबसे अच्छा HTML पार्सर मिल जाएगा: नोट करने के लिए एक दिलचस्प बात यह है कि, यदि आप स्थापित किया है lxml, BeautifulSoup यह के रूप में नए संस्करण के लिए documentation में विस्तार से बताया प्रयोग करेंगे यह स्थापित है। सुंदर सूप एलएक्सएमएल के पार्सर को सर्वश्रेष्ठ होने के रूप में रैंक करता है, फिर html5lib, फिर पायथन का अंतर्निहित पार्सर।

वैसे भी, भले ही BeautifulSoup हुड के नीचे lxml का उपयोग करता है, तो आप पार्स करने के लिए टूटी हुई html कि आप xml सीधे साथ पार्स नहीं कर सकता कर सकेंगे।

>>> lxml.etree.fromstring('<html>') 
... 
XMLSyntaxError: Premature end of data in tag html line 1, line 1, column 7 

हालांकि: उदाहरण के लिए:

>>> bs4.BeautifulSoup('<html>', 'lxml') 
<html></html> 

अंत में, ध्यान दें के रूप में निम्नानुसार lxml भी BeautifulSoup के पुराने संस्करण के लिए एक इंटरफेस प्रदान करता है कि:

>>> lxml.html.soupparser.fromstring('<html>') 
<Element html at 0x13bd230> 
के अंत में

तो दिन, आप शायद lxml और BeautifulSoup का उपयोग कर रहे होंगे। आपको चुनने के लिए केवल एक चीज है जो एपीआई है जिसे आप सबसे ज्यादा पसंद करते हैं।

0

lxml वह है जिसे आम तौर पर अनुशंसित किया जाता है। विशेष रूप से, lxml.html (अगर मुझे सही याद है)।

मुझे विश्वास है कि यह libxml2 अंडर-द-हूड का उपयोग करता है, लेकिन अगर एचटीएमएल विशेष रूप से बुरा है, तो सुंदरसप पर वापस आ जाता है, लेकिन इसके लिए मेरा शब्द न लें, वेबसाइट देखें! (http://http://lxml.de/)

1

BeautifulSoup एचटीएमएल पार्स करने के लिए अच्छा है। आप इसका उदाहरण देख सकते हैं और पाते हैं कि इसकी तुलना अन्य लोगों की तुलना में की जाती है।

संबंधित मुद्दे