विकृत एचटीएमएल के लिए कौन सा बेहतर और अधिक उपयोगी है?
मुझे libxml2 का उपयोग करने का तरीका नहीं मिल रहा है।पाइथन में विकृत HTML को पार्स करने के लिए कौन सी lxml और libxml2 बेहतर है?
धन्यवाद।
विकृत एचटीएमएल के लिए कौन सा बेहतर और अधिक उपयोगी है?
मुझे libxml2 का उपयोग करने का तरीका नहीं मिल रहा है।पाइथन में विकृत HTML को पार्स करने के लिए कौन सी lxml और libxml2 बेहतर है?
धन्यवाद।
में libxml2 page आप इस नोट देख सकते हैं:
नोट अजगर शुद्धतावादी के कुछ पायथन बाइंडिंग के डिफ़ॉल्ट सेट नापसंद करते हैं, न कि शिकायत की तुलना में है कि मैं सुझाव है कि वे के लिए अधिक pythonic बाइंडिंग lxml पर एक नजर है libxml2 और libxslt और मेलिंग सूची की जांच करें।
और lxml पेज इस एक दूसरे में:
lxml एक्सएमएल टूलकिट एक pythonic सी पुस्तकालयों libxml2 और libxslt के लिए बाध्यकारी है। यह अद्वितीय है कि यह मूल पुस्तकालय एपीआई की सादगी के साथ इन पुस्तकालयों की गति और एक्सएमएल सुविधा पूर्णता को जोड़ती है, जो अधिकतर संगत लेकिन प्रसिद्ध एलिमेंट ट्री एपीआई से बेहतर है।
तो अनिवार्य रूप से, lxml
साथ आप बिल्कुल वैसा ही कार्यक्षमता, मिलता है लेकिन मानक पुस्तकालय में ElementTree
पुस्तकालय (के साथ संगत आ pythonic एपीआई के साथ ऐसा इसका मतलब मानक पुस्तकालय प्रलेखन lxml
उपयोग करने के लिए सीखने के लिए उपयोगी हो सकता है)। यही कारण है कि lxml
libxml2
से अधिक पसंद किया जाता है (भले ही अंतर्निहित कार्यान्वयन एक ही है)।
संपादित करें: ऐसा कहा गया है कि, अन्य उत्तरों के रूप में, विकृत 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
का उपयोग कर रहे होंगे। आपको चुनने के लिए केवल एक चीज है जो एपीआई है जिसे आप सबसे ज्यादा पसंद करते हैं।
lxml वह है जिसे आम तौर पर अनुशंसित किया जाता है। विशेष रूप से, lxml.html (अगर मुझे सही याद है)।
मुझे विश्वास है कि यह libxml2 अंडर-द-हूड का उपयोग करता है, लेकिन अगर एचटीएमएल विशेष रूप से बुरा है, तो सुंदरसप पर वापस आ जाता है, लेकिन इसके लिए मेरा शब्द न लें, वेबसाइट देखें! (http://http://lxml.de/)
इसके बजाय beutifulsoup आज़माएं। इसका उद्देश्य खराब संरचित डेटा को पार्स करना है।
BeautifulSoup एचटीएमएल पार्स करने के लिए अच्छा है। आप इसका उदाहरण देख सकते हैं और पाते हैं कि इसकी तुलना अन्य लोगों की तुलना में की जाती है।