Node.js पर HTML- पार्सर [बंद]


198

रूबी की तरह वहाँ कुछ है nokogiri NodeJS पर? मेरा मतलब है एक उपयोगकर्ता के अनुकूल HTML- पार्सर।

मैंने Node.js मॉड्यूल पृष्ठ पर कुछ पार्सर देखे हैं, लेकिन मुझे कुछ सुंदर और ताज़ा नहीं मिल रहा है।


3
"दोस्ताना" से आपका क्या मतलब है? काम करने के लिए सुविधाजनक है और Nokogiri के XPath और CSS चयनकर्ता समर्थन के साथ नोड्स का चयन करना है? अमान्य "टैग सूप" HTML को पार्स करने में असमर्थ है?
फ्रॉग्ज

यदि आप jQuery के साथ सहज हैं, तो इस उत्तर पर विचार करें
लुसियो पाव

जवाबों:


446

यदि आप DOM बनाना चाहते हैं तो आप jsdom का उपयोग कर सकते हैं ।

चीयरियो भी है , इसमें jQuery इंटरफ़ेस है और यह jsdom के पुराने संस्करणों की तुलना में बहुत तेज़ है, हालाँकि इन दिनों वे प्रदर्शन में समान हैं।

आप htmlparser2 पर एक नज़र डाल सकते हैं , जो एक स्ट्रीमिंग पार्सर है, और इसके बेंचमार्क के अनुसार, यह दूसरों की तुलना में तेज़ है, और डिफ़ॉल्ट रूप से कोई डोम नहीं है। यह एक DOM का उत्पादन भी कर सकता है, क्योंकि यह एक हैंडलर के साथ बंडल भी है जो DOM बनाता है। यह वह पार्सर है जिसका उपयोग चीयरियो द्वारा किया जाता है।

parse5 भी एक अच्छे समाधान की तरह दिखता है। यह काफी सक्रिय है (इस अद्यतन के रूप में अंतिम प्रतिबद्ध होने के बाद से 11 दिन), WHATWG-compliant, और jsdom , Angular और Polymer में इसका उपयोग किया जाता है ।

और यदि आप HTML को वेब स्क्रैपिंग के लिए पार्स करना चाहते हैं , तो आप YQL 1 का उपयोग कर सकते हैं । इसके लिए एक नोड मॉड्यूल है। YQL मुझे लगता है कि अगर आपका HTML एक स्थिर वेबसाइट से है, तो सबसे अच्छा समाधान होगा क्योंकि आप एक सेवा पर भरोसा कर रहे हैं, न कि आपका अपना कोड और प्रोसेसिंग पावर। हालांकि ध्यान दें कि यह पृष्ठ काम नहीं करेगा यदि वेबसाइट के रोबोट द्वारा बंद कर दिया गया है। YQL इसके साथ काम नहीं करेगा।

यदि आप जिस वेबसाइट को खुरचने का प्रयास कर रहे हैं, वह गतिशील है तो आपको फैंटमज जैसे हेडलेस ब्राउजर का उपयोग करना चाहिए । यदि आप फैंटमज पर विचार कर रहे हैं, तो कैस्परज पर भी एक नज़र डालें। और अगर आप के साथ नोड से casperjs नियंत्रित कर सकते हैं SpookyJS

इसके अलावा वहाँ प्रेत z ज़ोंबीjs है । नोड्ज में एम्बेड नहीं किए जा सकने वाले प्रेत के विपरीत, जॉम्बीज सिर्फ एक नोड मॉड्यूल है।

वहाँ एक है Nettuts + toturial बाद समाधान के लिए।


1 अगस्त 2014 के बाद से, YUI पुस्तकालय, जो कि YQL के लिए एक आवश्यकता है, अब सक्रिय रूप से बनाए नहीं रखा गया है, स्रोत


1
आप डोमहैंडलर मॉड्यूल (htmlparser2 के साथ बंडल) का उपयोग करके htmlparser2 से DOM प्राप्त कर सकते हैं। डोम बनाने के ओवरहेड के बिना HTML के अन्य प्रकार के प्रसंस्करण की अनुमति देने के उद्देश्य से उन्हें अलग किया जाता है।
esp

@ धन्यवाद, इससे पहले कि मुझे लगा कि यह गैर-मानक डोम है, मैंने उस अनुभाग को तदनुसार बदल दिया।
फरीद नूरी नेशत

मुझे यकीन नहीं है कि आप रेंगने के लिए YQL कैसे करते हैं - यह वेब सेवा परिणामों में शामिल होने के लिए अधिक है, मार्कअप को संसाधित नहीं करता है।
dardenfall

@ वार्डन आप सही हैं, क्रॉलिंग सही शब्द नहीं है। मैंने इसे स्क्रैपिंग के साथ बदल दिया :)
फरीद नूरी नेष्ट

@Farid - (टिप्पणियों में बहस करने के जोखिम पर अगर मैं कर सकता था तो आपको सिर्फ मैसेज करना होगा) (क्षमा करें!) मैं अभी भी यह नहीं देखता कि आप इसे कैसे स्क्रैप करने के लिए उपयोग करते हैं। यह वेब सेवाओं के साथ नहीं साइटों के साथ काम करता है, और wservices के साथ, आप शायद ही कभी html को पार्स कर रहे हों। शायद xml, लेकिन html नहीं।
dardenfall


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.