Cheerio JavaScript (Node.js) गाइड: उदाहरण, तरीके, स्थापना

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Cheerio क्या है और इसकी आवश्यकता क्यों है?

Cheerio एक तेज़, लचीली और हल्की लाइब्रेरी है जो Node.js सर्वर-साइड पर HTML और XML को पार्स करने के लिए उपयोग की जाती है। यह डेवलपर्स को DOM ट्री में नेविगेट करने, खोजने और हेरफेर करने के लिए एक शक्तिशाली jQuery-जैसा सिंटैक्स प्रदान करती है। अगर आपने कभी ब्राउज़र में jQuery के साथ काम किया है, तो Cheerio आपको सहज लगेगा — Cheerio jQuery का एक उपसमूह लागू करता है, जो सर्वर-साइड उपयोग के लिए अनुकूलित है।

Cheerio के मुख्य उपयोग के मामले:

  • वेब स्क्रैपिंग (Web Scraping): वेब पेजों से डेटा निकालना (कीमतें, समाचार शीर्षक, लेख सामग्री)।
  • परीक्षण (Testing): वास्तविक ब्राउज़र के बिना यूनिट टेस्ट में HTML टेम्पलेट्स की संरचना की जाँच करना।
  • HTML प्रीप्रोसेसिंग: क्लाइंट को भेजने से पहले HTML दस्तावेज़ों के भागों को साफ करना, बदलना और निकालना।
  • RSS/XML फ़ीड पार्सिंग: XML दस्तावेज़ों को संसाधित करना, हालांकि XML के लिए अधिक विशेष उपकरण मौजूद हैं।

पूर्ण ब्राउज़र इंजन (जैसे Puppeteer या Playwright) के विपरीत, Cheerio JavaScript को रेंडर नहीं करता, CSS, इमेज या बाहरी संसाधनों को लोड नहीं करता। यह इसे अत्यधिक तेज़ और मेमोरी में किफायती बनाता है। Cheerio पहले से तैयार HTML स्ट्रिंग के साथ काम करता है, जिसे आप HTTP अनुरोध (axios, node-fetch या बिल्ट-इन http/https मॉड्यूल के माध्यम से) प्राप्त करते हैं।

Cheerio की स्थापना

Node.js प्रोजेक्ट में Cheerio स्थापित करने के लिए npm (या yarn) पैकेज मैनेजर का उपयोग करें। अपने प्रोजेक्ट की रूट डायरेक्टरी में टर्मिनल खोलें और निम्न कमांड चलाएँ:

npm install cheerio

यदि आप yarn का उपयोग कर रहे हैं:

yarn add cheerio

स्थापना के बाद, आप अपने कोड में लाइब्रेरी को आयात कर सकते हैं:

const cheerio = require('cheerio');
// या ES-मॉड्यूल के लिए:
// import * as cheerio from 'cheerio';

ध्यान दें: Cheerio एक Node.js लाइब्रेरी है और ब्राउज़र में काम करने के लिए डिज़ाइन नहीं की गई है। यदि आपको क्लाइंट-साइड पर HTML पार्स करने की आवश्यकता है, तो नेटिव DOMParser का उपयोग करना बेहतर होगा।

त्वरित शुरुआत: पहला उदाहरण

आइए एक सरल स्क्रिप्ट लिखें जो HTML स्ट्रिंग लोड करती है, उसमें सभी लिंक ढूंढती है और उनके टेक्स्ट और href विशेषताओं को प्रिंट करती है।

const cheerio = require('cheerio');

// उदाहरण HTML कोड (आमतौर पर आप इसे HTTP अनुरोध के माध्यम से प्राप्त करते हैं)
const html = `
<html>
<head><title>पृष्ठ का उदाहरण</title></head>
<body>
    <h1>स्वागत है!</h1>
    <ul>
        <li><a href="https://example.com">लिंक 1</a></li>
        <li><a href="https://google.com">लिंक 2</a></li>
        <li class="special"><a href="https://github.com">लिंक 3</a></li>
    </ul>
</body>
</html>
`;

// HTML को Cheerio में लोड करें
const $ = cheerio.load(html);

// सभी <a> टैग खोजें और उन्हें इटरेट करें
$('a').each((index, element) => {
    const text = $(element).text();       // टैग के अंदर का टेक्स्ट
    const href = $(element).attr('href'); // href विशेषता का मान
    console.log(`${index + 1}. ${text} - ${href}`);
});

// परिणाम:
// 1. लिंक 1 - https://example.com
// 2. लिंक 2 - https://google.com
// 3. लिंक 3 - https://github.com

जैसा कि आप देख सकते हैं, सिंटैक्स jQuery के समान है: हम तत्वों को चुनने के लिए $() फ़ंक्शन का उपयोग करते हैं, और फिर उनके साथ काम करने के लिए .text(), .attr(), .each() जैसे तरीकों को लागू करते हैं।

Cheerio के मुख्य तरीके और फ़ंक्शन

नीचे विवरण, पैरामीटर और उदाहरणों के साथ Cheerio के 10 प्रमुख तरीकों का विस्तृत विश्लेषण दिया गया है।

1. cheerio.load(html, options?)

यह क्या करता है: HTML स्ट्रिंग लोड करता है और मुख्य $ फ़ंक्शन लौटाता है, जिसके माध्यम से आप DOM के साथ इंटरैक्ट करते हैं। यह लाइब्रेरी में प्रवेश बिंदु है।

पैरामीटर:

  • html (स्ट्रिंग): पार्स करने के लिए HTML कोड।
  • options (ऑब्जेक्ट, वैकल्पिक): कॉन्फ़िगरेशन विकल्प, जैसे { decodeEntities: true } (डिफ़ॉल्ट) HTML एंटिटी को डीकोड करने के लिए।

उदाहरण:

const $ = cheerio.load('<h1>नमस्ते दुनिया!</h1>');
console.log($('h1').text()); // "नमस्ते दुनिया!"

2. $(selector, context?)

यह क्या करता है: CSS सिलेक्टर के आधार पर तत्वों का चयन करता है। यह jQuery के समान है और Cheerio में सबसे अधिक उपयोग किया जाने वाला तरीका है।

पैरामीटर:

  • selector (स्ट्रिंग): CSS सिलेक्टर (जैसे 'div', '.class', '#id')।
  • context (वैकल्पिक): एक तत्व या नोड जो खोज को सीमित करता है।

उदाहरण:

const $ = cheerio.load('<div class="content"><p>टेक्स्ट</p></div>');
console.log($('.content').html()); // "<p>टेक्स्ट</p>"

3. .text(content?)

यह क्या करता है: चयनित तत्वों के अंदर सभी टेक्स्ट सामग्री प्राप्त करता है या सेट करता है।

पैरामीटर:

  • content (स्ट्रिंग, वैकल्पिक): यदि प्रदान किया जाता है, तो टेक्स्ट सेट करता है; अन्यथा, वर्तमान टेक्स्ट लौटाता है।

उदाहरण:

const $ = cheerio.load('<p>नमस्ते <strong>दुनिया</strong></p>');
console.log($('p').text()); // "नमस्ते दुनिया"
$('p').text('नया टेक्स्ट');
console.log($('p').text()); // "नया टेक्स्ट"

4. .html(content?)

यह क्या करता है: चयनित तत्व के अंदर HTML सामग्री प्राप्त करता है या सेट करता है।

पैरामीटर:

  • content (स्ट्रिंग, वैकल्पिक): यदि प्रदान किया जाता है, तो आंतरिक HTML सेट करता है; अन्यथा, वर्तमान HTML लौटाता है।

उदाहरण:

const $ = cheerio.load('<div><p>टेक्स्ट</p></div>');
console.log($('div').html()); // "<p>टेक्स्ट</p>"
$('div').html('<span>नया</span>');
console.log($('div').html()); // "<span>नया</span>"

5. .attr(name, value?)

यह क्या करता है: चयनित तत्व की एक विशेषता प्राप्त करता है या सेट करता है।

पैरामीटर:

  • name (स्ट्रिंग): विशेषता का नाम (जैसे 'href', 'class')।
  • value (स्ट्रिंग, वैकल्पिक): यदि प्रदान किया जाता है, तो विशेषता सेट करता है; अन्यथा, वर्तमान मान लौटाता है।

उदाहरण:

const $ = cheerio.load('<a href="https://example.com">लिंक</a>');
console.log($('a').attr('href')); // "https://example.com"
$('a').attr('href', 'https://new.com');
console.log($('a').attr('href')); // "https://new.com"

6. .each(function(index, element))

यह क्या करता है: चयनित तत्वों के सेट पर इटरेट करता है और प्रत्येक तत्व के लिए एक फ़ंक्शन निष्पादित करता है।

पैरामीटर:

  • function(index, element): कॉलबैक फ़ंक्शन जहाँ index तत्व का इंडेक्स है और element वर्तमान DOM तत्व है।

उदाहरण:

const $ = cheerio.load('<ul><li>एक</li><li>दो</li></ul>');
$('li').each((i, el) => {
    console.log(`${i}: ${$(el).text()}`);
});
// 0: एक
// 1: दो

7. .find(selector)

यह क्या करता है: चयनित तत्वों के वंशजों में CSS सिलेक्टर से मेल खाने वाले तत्वों की खोज करता है।

पैरामीटर:

  • selector (स्ट्रिंग): CSS सिलेक्टर।

उदाहरण:

const $ = cheerio.load('<div><p>टेक्स्ट</p></div>');
console.log($('div').find('p').text()); // "टेक्स्ट"

8. .children(selector?)

यह क्या करता है: चयनित तत्व के प्रत्यक्ष बाल तत्व प्राप्त करता है। वैकल्पिक रूप से, केवल उन बच्चों को फ़िल्टर करता है जो सिलेक्टर से मेल खाते हैं।

पैरामीटर:

  • selector (स्ट्रिंग, वैकल्पिक): CSS सिलेक्टर।

उदाहरण:

const $ = cheerio.load('<ul><li>एक</li><li>दो</li></ul>');
console.log($('ul').children().length); // 2
console.log($('ul').children('li').length); // 2

9. .parent()

यह क्या करता है: चयनित तत्व के प्रत्यक्ष मूल तत्व को लौटाता है।

पैरामीटर: कोई नहीं।

उदाहरण:

const $ = cheerio.load('<div><p>टेक्स्ट</p></div>');
console.log($('p').parent().prop('tagName')); // "div"

10. .remove()

यह क्या करता है: DOM से चयनित तत्वों को हटाता है।

पैरामीटर: कोई नहीं।

उदाहरण:

const $ = cheerio.load('<div><p>रखें</p><span>हटाएँ</span></div>');
$('span').remove();
console.log($('div').html()); // "<p>रखें</p>"

निष्कर्ष

Cheerio Node.js में HTML पार्सिंग के लिए एक शक्तिशाली और तेज़ उपकरण है। इसका jQuery-जैसा सिंटैक्स इसे सीखना और उपयोग करना आसान बनाता है, खासकर उन डेवलपर्स के लिए जो पहले से jQuery से परिचित हैं। वेब स्क्रैपिंग, टेम्पलेट परीक्षण, या HTML प्रीप्रोसेसिंग के लिए, Cheerio एक उत्कृष्ट विकल्प है। अधिक जानकारी के लिए आधिकारिक दस्तावेज़ देखें।

अनुशंसाएँ