कौन सा HTML Parser सबसे अच्छा है? [बन्द है]


194

मैं बहुत सारे पार्सर्स को कोड करता हूं। अब तक, मैं पार्सिंग और ब्राउज़र ऑटोमेशन के लिए HtmlUnit हेडलेस ब्राउज़र का उपयोग कर रहा था।

अब, मैं दोनों कार्यों को अलग करना चाहता हूं।

चूंकि मेरे काम के 80% में सिर्फ पार्सिंग शामिल है, मैं एक हल्के HTML पार्सर का उपयोग करना चाहता हूं क्योंकि HtmlUnit में पहले एक पेज लोड करने में बहुत समय लगता है, फिर स्रोत प्राप्त करें और फिर इसे पार्स करें।

मैं जानना चाहता हूं कि कौन सा HTML पार्सर सबसे अच्छा है। यदि यह HtmlUnit पार्सर के करीब है तो पार्सर बेहतर होगा।


संपादित करें:

सर्वोत्तम रूप से, मुझे कम से कम निम्नलिखित सुविधाएँ चाहिए:

  1. गति
  2. किसी भी HtmlElement को उसके "आईडी" या "नाम" या "टैग प्रकार" द्वारा खोजने में आसानी।

यह मेरे लिए ठीक होगा यदि यह गंदे HTML कोड को साफ नहीं करता है। मुझे किसी भी HTML स्रोत को साफ़ करने की आवश्यकता नहीं है। मुझे बस HtmlElements में स्थानांतरित करने और उनसे डेटा कटाई करने के लिए एक आसान तरीका चाहिए।


2
आप "सबसे अच्छा" कैसे मतलब है? क्या आपका मतलब है गति, वर्तमान कार्यान्वयन से संक्रमण में आसानी, डब्ल्यू 3 सी मानकों का पालन, कुछ और जो मैंने नहीं सोचा है? आपके प्रश्न का तात्पर्य गति से है, लेकिन इसका तात्पर्य विकास संक्रमण के समय से भी है। कुछ स्पष्टीकरण अच्छे पार्सरों की सिफारिश करने में दूसरों की मदद कर सकते हैं जो आपकी आवश्यकताओं को बेहतर ढंग से फिट करेंगे।
एपर्किंस

2
आपका कथन 'मैं बहुत से पार्सर्स को कोड करता हूं' प्रश्न के साथ नहीं लगता है। क्या आपका मतलब है 'मुझे html पार्सर का उपयोग करने की आवश्यकता है?'
खाली

11
मुझे लगता है कि यह प्रश्न "रचनात्मक नहीं" करीबी कारण से मुक्त होने के लिए पर्याप्त विशिष्ट है।
छिपकली का बिल

9
कृपया इसे पुनः खोलने के लिए मतदान करें। यह पर्याप्त विशिष्ट है और इसे बंद नहीं किया जाना चाहिए।
अ ० स ०

3
हाँ, SO पर कुछ लोग "सर्वश्रेष्ठ" सवालों के पवित्र युद्धों के खिलाफ एक पवित्र युद्ध लड़ते हैं। गुस्सा कर देने वाला। उत्तर मतदान स्पष्ट रूप से इस प्रश्न की उपयोगिता को दर्शाता है।
user1050755

जवाबों:


396

स्व प्लग: मैंने अभी एक नया जावा HTML पार्सर जारी किया है: jsoup । मैं इसका उल्लेख यहां करता हूं क्योंकि मुझे लगता है कि यह वही करेगा जो आप कर रहे हैं।

तत्वों को खोजने के लिए इसका पार्टी ट्रिक CSS चयनकर्ता वाक्यविन्यास है, जैसे:

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
Elements links = doc.select("a");
Element head = doc.select("head").first();

देखें अधिक जानकारी के लिए चयनकर्ता javadoc ।

यह एक नई परियोजना है, इसलिए सुधार के लिए कोई भी विचार बहुत स्वागत है!


15
यह बात शानदार है, और मुझे CSS चयनकर्ता समर्थन बहुत पसंद है। मुझे बमुश्किल पता है कि मैं एक जावा लाइब्रेरी का उपयोग कर रहा हूं। :-)
विलियम पिएत्री

17
कृपया इसका समर्थन करना बंद न करें। यह वही है जो हमने सर्वर-साइड जावा का उपयोग करके HTML को पार्स करने के लिए आवश्यक है! यह कमाल का है! मैंने केवल कुछ घंटों में एक प्रॉक्सी का निर्माण किया जो सभी src और href लिंक को संशोधित करता है ताकि उन्हें मूल सर्वर पर पूर्ण पथ बनाया जा सके।
jmort253

7
मैंने अभी इस पर एक नज़र डाली है। मुझे इसका इंटरफ़ेस और प्रलेखन पसंद है। यह समझना आसान है। :)
पन्नाधाय

5
अच्छी नौकरी! 10 मिनट से भी कम समय में jsoup ऊपर और चल रहा है।
Indrek K .ue

10
अविश्वसनीय, यह सू बीमार है। मैं मिनटों के भीतर एक HTML पृष्ठ संसाधित करने में सक्षम था। इस महान कार्य के लिए आपको बहुत धन्यवाद।
माइकल-ओ

32

अब तक मैंने जो सबसे अच्छा देखा है वह है HtmlCleaner :

HtmlCleaner जावा में लिखित ओपन सोर्स HTML पार्सर है। वेब पर पाया जाने वाला HTML आमतौर पर आगे की प्रक्रिया के लिए गंदा, बीमार और अनुपयुक्त होता है। ऐसे दस्तावेजों के किसी भी गंभीर खपत के लिए, पहले गंदगी को साफ करना और टैग, विशेषताओं और साधारण पाठ के लिए आदेश लाना आवश्यक है। दिए गए HTML दस्तावेज़ के लिए, HtmlCleaner अलग-अलग तत्वों को फिर से व्यवस्थित करता है और अच्छी तरह से गठित XML बनाता है। डिफ़ॉल्ट रूप से, यह इसी तरह के नियमों का पालन करता है जो दस्तावेज़ ऑब्जेक्ट मॉडल बनाने के लिए अधिकांश वेब ब्राउज़र का उपयोग करते हैं। हालाँकि, उपयोगकर्ता टैग फ़िल्टरिंग और संतुलन के लिए कस्टम टैग और नियम सेट प्रदान कर सकता है।

HtmlCleaner के साथ आप XPath का उपयोग करके किसी भी तत्व का पता लगा सकते हैं।

अन्य html पार्सर के लिए यह SO प्रश्न देखें ।


1
आपको प्रॉक्सी को स्वयं संभालना होगा, फिर अपनी स्ट्रीम को संसाधित करने के लिए HtmlCleaner का उपयोग करना होगा। => यह सुविधाजनक नहीं है। T__T
kidnan1991

क्या HTMLTidy यहां बेहतर विकल्प नहीं होगा? html-tidy.org
ट्रॉय विटथॉफ़्ट 12

1
Similar rules that the most of web browsers use- यह बहुत समझाने वाला नहीं है
pguardiario

9

मैं सुझाव देता हूं कि HTML5 पार्सिंग एल्गोरिथ्म पर आधारित Validator.nu का पार्सर है। यह 2010-05-03 से मोज़िला में उपयोग किया जाने वाला पार्सर है


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