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 की आवश्यकता होगी।

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

फिर दस्तावेज़ ऑब्जेक्ट प्राप्त करने के लिए इसे नोकोगिरी के साथ पार्स करें।

इसे पसंद करें :

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

document.class
# Nokogiri::HTML::Document

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

  • XPath क्वेरी का उपयोग करना
  • सीएसएस चयनकर्ताओं का उपयोग करना

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

यह रहा कोड :

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

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

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

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

वे कौन से टैग हैं जिनमें 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. एक मैट्रिक्स क्या है और रूबी में इसका उपयोग कैसे करें?

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

  1. रूबी में स्ट्रक्चर और ओपनस्ट्रक्चर का उपयोग कैसे करें?

    रूबी में स्ट्रक्चर क्या है? एक संरचना एक अंतर्निहित रूबी वर्ग है, इसका उपयोग नए वर्ग बनाने के लिए किया जाता है जो मूल्य वस्तुओं का उत्पादन करते हैं। संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए एक मूल्य वस्तु का उपयोग किया जाता है। यहां एक उदाहरण दिया गया है : एक Point दो निर्देशांकों के साथ