2012-03-12 15 views
9

मैंने एक पायथन लिपि लिखी है जो डाउनलोड की गई बड़ी संख्या में वेबपृष्ठों (एचटीएमएल (120 के पेज) को संसाधित करती है। मुझे उन्हें पार्स करने और वहां से कुछ जानकारी निकालने की ज़रूरत है। मैंने सुंदर सूप का उपयोग करने की कोशिश की, जो कि आसान और सहज है, लेकिन ऐसा लगता है कि धीरे-धीरे सुपर चल रहा है। चूंकि यह ऐसा कुछ है जो नियमित रूप से एक कमजोर मशीन (अमेज़ॅन पर) पर चलना होगा, गति महत्वपूर्ण है। क्या अजगर में एक HTML/XML पार्सर है जो सुंदर सूप से बहुत तेज काम करेगा? या मुझे regex पार्सिंग का सहारा लेना चाहिए ..एक तेज़ पायथन एचटीएमएल पार्सर

+5

[टट्टू को दूर रखें ...] (http://stackoverflow.com/a/1732454/554546) –

+2

मुझे पाइथन में HTML को पार्स करने का कोई अनुभव नहीं है, लेकिन [यहां] (http: //blog.ianbicking .org/2008/03/30/पायथन-एचटीएमएल-पार्सर-प्रदर्शन /) कुछ बेंचमार्क परिणाम हैं जिन्हें आप उपयोगी पा सकते हैं। –

+8

[रेगेक्स और एचटीएमएल == विफलता] (http://stackoverflow.com/a/1732454/554546) –

उत्तर

13

lxml एक तेजी से XML और HTML पार्सर है। आपके कोड को तत्वों की एक धारा दी गई है और आपको अपने रिश्तों को अनुमानित करना (और संभावित रूप से स्टोर करना) करना है; लेकिन आपको केवल उतना ही राज्य बनाए रखने की आवश्यकता है जितनी आवश्यक डेटा प्राप्त करने के लिए आवश्यक है। इसके विपरीत, डोम-स्टाइल पार्सर्स को एक नेविगबल ऑब्जेक्ट मॉडल बनाने की आवश्यकता होती है, जिसमें समय (और मेमोरी) होती है जिसे शायद आपको खर्च करने की आवश्यकता नहीं होती है।

पायथन के पास HTML के लिए ऐसा पार्सर है; इसे HTMLParser (html.parser पायथन 3) कहा जाता है। उस डेटा को पहचानना कितना मुश्किल है, जिसे आप निकालना चाहते हैं, हालांकि, इस तरह के पार्सिंग को सफलतापूर्वक झुकाव करना बहुत कठिन हो सकता है। यदि आप एक उदाहरण फ़ाइल और जानकारी पोस्ट करना चाहते हैं, तो आप किस डेटा को निकालना चाहते हैं, मैं शायद एक झटका लगा सकता हूं।

+2

के खिलाफ प्रदर्शन अनुपात का समर्थन करने के लिए कोई डेटा नहीं है, बेंचमार्किंग से पता चलता है कि एलएक्सएमएल बहुत तेज है! – WeaselFox

+0

स्थापित करने के लिए: 'पाइप स्थापित lxml' – Flimm

0

कोशिश करें: ElementTree तेज़ हो सकता है, लेकिन मुझे यकीन नहीं है। http://lxml.de/parsing.html

+0

मैं यह भी सुझाव देने जा रहा था ... हालांकि, मेरे पास सुंदर सूप – inspectorG4dget

3

SAX शैली पारसर्स डोम आधारित लोगों की तुलना में तेजी हो सकता है:

xml.etree.ElementTree import ElementTree 
संबंधित मुद्दे