Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

नोकोगिरी के साथ रूबी में HTML पार्सिंग में मास्टर करें

क्या आप रूबी के साथ HTML पार्स करने की कोशिश कर रहे हैं?

यह कार्य थोड़ा मुश्किल हो सकता है यदि आपके पास सही उपकरण नहीं हैं।

लेकिन आज आप भाग्यशाली हैं!

क्योंकि रूबी के पास नोकोगिरी नामक यह अद्भुत लाइब्रेरी है, जो HTML पार्सिंग को पार्क में टहलने जैसा आसान बना देती है।

आइए कुछ उदाहरण देखते हैं।

सबसे पहले, नोकोगिरी जेम इंस्टॉल करें:

 gem install nokogiri 

यदि आपको जेम इंस्टॉल करने में समस्या है तो इसे आजमाएं:

 gem install nokogiri -- --use-system-libraries 

शीर्षक कैसे निकालें

फिर निम्न स्क्रिप्ट बनाएं, जिसमें एक बेसिक HTML स्निपेट है जिसे नोकोगिरी द्वारा पार्स किया जाएगा।

पेज शीर्षक प्राप्त करने के लिए इस कोड को चलाएं:

 require 'nokogiri' html = "testactual content here..." parsed_data = Nokogiri::HTML.parse(html) puts parsed_data.title => "test" 

यदि आप HTML स्ट्रिंग के बजाय सीधे URL से डेटा पार्स करना चाहते हैं...

आप यह कर सकते हैं:

 require 'open-uri' Nokogiri::HTML.parse(open('https://example.com')).title 

यह HTML डाउनलोड करेगा और आपको शीर्षक देगा।

अब:

शीर्षक प्राप्त करना अच्छा है, लेकिन आप शायद अधिक उन्नत उदाहरण देखना चाहते हैं।

सही?

आइए देखते हैं कि वेबसाइट से लिंक्स कैसे निकाले जाते हैं।

एंकर लिंक्स निकालना

यदि आप किसी पेज से सभी लिंक्स चाहते हैं तो पहले आपको HTML की आवश्यकता होगी।

आप किसी भी सार्वजनिक वेबसाइट के लिए HTML डाउनलोड करने के लिए उसी open-uri तकनीक का उपयोग कर सकते हैं।

फिर नोकोगिरी के साथ इसे पार्स करके एक डॉक्यूमेंट ऑब्जेक्ट प्राप्त करें।

इस तरह:

 document = Nokogiri::HTML.parse(open('https://example.com')) document.class # Nokogiri::HTML::Document 

आप इस ऑब्जेक्ट से दो तरीकों से जानकारी क्वेरी कर सकते हैं:

  • XPath क्वेरीज़ का उपयोग करके
  • CSS सेलेक्टर्स का उपयोग करके

आइए पहले XPath का उपयोग करके देखते हैं कि यह कैसे करना है।

यहां कोड है:

 tags = document.xpath("//a") 

यह क्या करता है?

यह पेज में सभी HTML टैग्स के माध्यम से फ़िल्टर करता है, और आपको वे देता है जिनका आप अनुरोध कर रहे हैं।

इस मामले में "a" टैग्स।

जो HTML में लिंक्स वाले टैग्स हैं।

अब:

आपके पास इन टैग्स को दर्शाने वाले Nokogiri::XML::Element की एक सरणी है।

यदि आप लिंक URL और टेक्स्ट प्राप्त करना चाहते हैं तो आप यह कर सकते हैं:

 tags.each do |tag| puts "#{tag[:href]}\t#{tag.text}" end 

यह सभी लिंक्स को आपकी स्क्रीन पर एक प्रति लाइन प्रिंट करेगा।

यदि आप लिंक्स के बजाय कुछ अन्य जानकारी स्क्रैप करना चाहते हैं, जैसे पेज पर उपलब्ध इमेजेज की सूची, तो आप उसी प्रक्रिया का पालन कर सकते हैं।

केवल एक चीज जिसे आपको बदलने की आवश्यकता है वह है उस टैग का प्रकार जिसे आप चाहते हैं।

उदाहरण के लिए:

 tags = document.xpath("//img") images_urls = tags.map { |t| t[:src] } 

जहां img इमेजेज के लिए HTML टैग है, और src वह एट्रिब्यूट है जहां इमेज URL संग्रहीत है।

सही CSS सेलेक्टर और एट्रिब्यूट्स खोजने के लिए अपने ब्राउज़र के डेवलपर टूल्स का उपयोग करें।

नोकोगिरी के साथ CSS सेलेक्टर्स का उपयोग

आप xpath विधि को css विधि से बदलकर CSS सेलेक्टर्स का उपयोग कर सकते हैं।

यहां एक उदाहरण है:

 headers = document.css("h1") paragraphs = document.css("p") 

नोट: at_css और css के बीच अंतर यह है कि पहला केवल पहला मिलान तत्व लौटाता है, लेकिन बाद वाला सभी मिलान तत्वों को लौटाता है।

CSS का उपयोग करके आपको वही परिणाम मिलते हैं, पूरा बिंदु नोकोगिरी को यह बताना है कि आप किन HTML तत्वों के साथ काम करना चाहते हैं।

अधिकांश डेवलपर्स XPath की तुलना में CSS से अधिक परिचित हैं, इसलिए आप CSS का उपयोग करना चाहेंगे।

सारांश

आप नोकोगिरी डॉक्यूमेंटेशन यहां पा सकते हैं:

https://www.rubydoc.info/github/sparklemotion/nokogiri

आपको यह भी पसंद आ सकता है:

रूबी स्ट्रिंग फॉर्मेट

  1. रूबी में एनवायरनमेंट वेरिएबल्स मास्टर करें: एक व्यावहारिक मार्गदर्शिका रूबी में एनवायरनमेंट वेरिएबल्स मास्टर करें: एक व्यावहारिक मार्गदर्शिका

    एक एनवायरनमेंट वेरिएबल एक कुंजी/मान जोड़ी है, यह इस तरह दिखती है: KEY=VALUE हम इन वेरिएबल्स का उपयोग अपने कंप्यूटर में सभी प्रोग्राम्स के बीच कॉन्फ़िगरेशन विकल्प साझा करने के लिए करते हैं। यही कारण है कि यह सीखना महत्वपूर्ण है कि वे कैसे काम करते हैं और ENV विशेष वेरिएबल का उपयोग करके अपने रूबी प्

  1. रूबी मैट्रिक्स को समझना: परिभाषा, अनुप्रयोग और उन्हें कैसे बनाएं रूबी मैट्रिक्स को समझना: परिभाषा, अनुप्रयोग और उन्हें कैसे बनाएं

    मैट्रिक्स एक 2D (2-डायमेंशनल) ऐरे है जिसका उपयोग स्प्रेडशीट जैसे डेटा को स्टोर और काम करने के लिए किया जा सकता है। इनका उपयोग किया जा सकता है: टेबल गेम में बोर्ड को दर्शाना (शतरंज, चेकर्स, आदि) आंकड़े और डेटा विश्लेषण प्लॉट्स और ग्राफ़ उत्पन्न करना क्योंकि यह एक शक्तिशाली डेटा संरचना है इसलिए इसका

  1. रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स

    रूबी में स्ट्रक्ट क्या है? एक स्ट्रक्ट एक बिल्ट-इन रूबी क्लास है, इसका उपयोग वैल्यू ऑब्जेक्ट्स उत्पन्न करने वाली नई क्लासेस बनाने के लिए किया जाता है। एक वैल्यू ऑब्जेक्ट संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए उपयोग किया जाता है। यहां एक उदाहरण है: दो निर्देशांकों (x और y) के साथ एक Point।