मैं जानना चाहता हूं कि नॉकोगिरी XPath या CSS पार्सिंग HTML फ़ाइलों के साथ तेजी से काम करता है या नहीं। गति अलग कैसे है?XPath या CSS तेजी से पार्सिंग (HTML फ़ाइलों पर नोकोगिरी के लिए)?
उत्तर
नोकोगिरी में XPath या CSS पार्सिंग नहीं है। यह एक्सएमएल/एचटीएमएल को एक एकल डोम में पार्स करता है जिसे आप क्वेरी पर सीएसएस या एक्सपीएथ सिंटैक्स का उपयोग कर सकते हैं।
सीएसएस चयनकर्ता आंतरिक रूप से क्वेरी करने के लिए libxml2 पूछने से पहले XPath में परिवर्तित हो जाते हैं। इस तरह (सटीक समान चयनकर्ताओं के लिए) XPath संस्करण एक छोटा सा अंश तेज़ होगा, क्योंकि सीएसएस को पहले XPath में परिवर्तित करने की आवश्यकता नहीं है।
हालांकि, आपके प्रश्न का कोई सामान्य उत्तर नहीं है; यह इस बात पर निर्भर करता है कि आप किसके लिए चयन कर रहे हैं, और आपका XPath कैसा दिखता है। संभावना है कि, आप उसी XPath को नहीं लिखेंगे क्योंकि नोकोगिरी बनाता है। उदाहरण के लिए, आपको निम्न दो सीएसएस बयानों के लिए XPath अनुमान लगा सकते हैं अगर देखें: एक वेब ब्राउज़र के विपरीत
puts Nokogiri::CSS.xpath_for('#foo')
#=> //*[@id = 'foo']
puts Nokogiri::CSS.xpath_for 'div.article a.external'
#=> //div[contains(concat(' ', @class, ' '), ' article ')]//a[contains(concat(' ', @class, ' '), ' external ')]
, id
और class
गुण नहीं भागा-अप कैश है, उन्हें मदद नहीं करता है के लिए बहुत का चयन। दरअसल, div.article
की सामान्य व्याख्या div[@class='article']
जैसी चीज़ों की तुलना में कहीं अधिक काम करती है।
जैसा कि @ एलबीजी ने टिप्पणी की है, आपको के लिए बेंचमार्क करना चाहिए यदि पूर्ण गति है।
हालांकि, मैं यह सुझाव दूंगा: इसके बारे में चिंता न करें। कंप्यूटर तेज हैं। लिखें, प्रोग्रामर के लिए सबसे सुविधाजनक क्या है। यदि कोई सीएसएस चयनकर्ता शिल्प करना आसान है, टाइप करने के लिए तेज़ है, और बाद में आपके कोड की समीक्षा करते समय समझने में आसान है, उस का उपयोग करें। XPath का उपयोग करें जब आपको उन चीजों को करने की आवश्यकता होती है जिन्हें आप सीएसएस चयनकर्ता वाक्यविन्यास के साथ नहीं कर सकते हैं।
नोकिया को एक उचित जटिल सीएसएस को XPath में बदलने में कितना समय लगता है?
t = Time.now
1000.times do |i|
# Use a different CSS string each time to avoid built-in caching
css = "body#foo table#bar#{i} thead th, body#foo table#bar#{i} tbody td"
Nokogiri::CSS.xpath_for(css)
end
puts (Time.now - t)/1000
#=> 0.000405041
से कम आधा एक millisecond।
हम्म, यह बिल्कुल सही है जिसे मैं लिखूंगा। :) दूसरा क्लास "ट्रिक" का उपयोग करता है जिसे आप HTML क्लास एट्रिब्यूट को पार्स करते समय उपयोग करना चाहते हैं, जिसमें कई मान रिक्त स्थान से अलग हो सकते हैं। –
@Phrogz, "सीएसएस चयनकर्ता आंतरिक रूप से क्वेरी करने के लिए libxml2 पूछने से पहले XPath में परिवर्तित हो जाते हैं। ऐसे में (सटीक समान चयनकर्ताओं के लिए) XPath संस्करण एक छोटा सा अंश तेज़ होगा, क्योंकि सीएसएस को XPath में परिवर्तित करने की आवश्यकता नहीं है प्रथम।" आप XPath में एक्सेसर को लिखने के तरीके को याद रखने के लिए सिर स्क्रैचिंग समय की अनुमति देना भूल गए। :-) –
+1 "इसके बारे में चिंता न करें" के लिए +1। Zactly! समझने में आसान कोड के रखरखाव में दीर्घकालिक लाभ है। मैं कंप्यूटर के समय के बारे में ज्यादा चिंता नहीं करता, यह मेरी समझ है कि मुझे क्या समझने के लिए लिखा गया था। –
- 1. नोकोगिरी के बराबर क्लोजर क्या है (xpath और css चयनकर्ताओं के साथ xml पार्सिंग के लिए)
- 2. नोकोगिरी xpath() 'या' ऑपरेटर?
- 3. नोकोगिरी (रूबी) और XPath
- 4. केवल HTML और/या CSS
- 5. नोकोगिरी में .atss से .css के बीच क्या अंतर है?
- 6. रूबी नोकोगिरी सीएसएस एचटीएमएल पार्सिंग
- 7. grunt.js के साथ HTML/CSS फ़ाइलों को कैसे सत्यापित करें?
- 8. HTML/CSS व्हाइटस्पेस तोड़ने
- 9. संपूर्ण HTML नोड्स को नोकोगिरी
- 10. jquery-like HTML पार्सिंग?
- 11. क्या जावा के लिए एलएक्सएमएल या नोकोगिरी जैसी लाइब्रेरी है?
- 12. jQuery और XPath XML पार्सिंग
- 13. Lxml html xpath संदर्भ
- 14. पार्सिंग HTML पृष्ठ वर्ग
- 15. पार्सिंग HTML एक तत्व
- 16. क्या मुझे सिल्वरलाइट या जावास्क्रिप्ट/JQuery/CSS/HTML सीखना चाहिए?
- 17. कच्चे HTML/CSS सामग्री से ASP.NET से पीडीएफ जेनरेट करें?
- 18. मैं नोकोगिरी में XPath का उपयोग कैसे करूं?
- 19. ics (iCal) फ़ाइलों के लिए HTML व्यूअर
- 20. यदि पृष्ठ पर मौजूद तत्व मौजूद है तो नोकोगिरी/रुबी पार्सिंग के दौरान कैसे जांचें?
- 21. कैश CSS और JS फ़ाइलों
- 22. HTML/CSS सही पक्ष पर जमे हुए टेबल कॉलम
- 23. बाएं तेजी से जुड़ें या अंदरूनी तेजी से शामिल हों?
- 24. नोकोगिरी नोड के कच्चे एचटीएमएल प्राप्त करने के लिए
- 25. रैपिंग पाठ = "पाठ" तत्व HTML/CSS
- 26. सी # में पार्सिंग HTML तालिका
- 27. HTML/CSS दो ऑटो चौड़ाई कॉलम
- 28. फ़ाइलों या मुख्य HTML में सीएसएस और जावास्क्रिप्ट रखें?
- 29. <DOCTYPE> टैग जोड़ने से नोकोगिरी को कैसे रोकें?
- 30. पाठ div को स्क्रॉल करने के लिए स्क्रॉल करें यदि टेक्स्ट HTML/CSS पर बहती है?
देखें ['बेंचमार्क'] (http://www.ruby-doc.org/stdlib-1.9.3/libdoc/benchmark/rdoc/Benchmark.html)। –