Node.js में HTML पार्सिंग (JavaScript): संपूर्ण गाइड
HTML पार्सिंग वेब स्क्रैपर (web scraper) बनाने और डेटा कलेक्शन को ऑटोमेट करने की एक अहम प्रक्रिया है। Node.js इकोसिस्टम में कई शक्तिशाली लाइब्रेरी हैं जो HTML डॉक्यूमेंट से जानकारी निकालने में मदद करती हैं। इस आर्टिकल में हम तीन मुख्य टूल्स: Cheerio, JSDOM और Puppeteer को समझेंगे, उनकी तुलना करेंगे और प्रैक्टिकल कोड उदाहरण देंगे।
1. Cheerio — सर्वर के लिए हल्का jQuery
Cheerio Node.js में HTML पार्सिंग की सबसे लोकप्रिय लाइब्रेरी है। यह jQuery का सिंटैक्स इस्तेमाल करती है, लेकिन ब्राउज़र एनवायरनमेंट के बिना काम करती है, जिससे यह तेज़ और मेमोरी-एफिशिएंट है। Cheerio स्टैटिक HTML पेजों के लिए परफेक्ट है जहाँ JavaScript चलाने की ज़रूरत नहीं है।
इंस्टॉलेशन
npm install cheerio
उपयोग का उदाहरण
const cheerio = require('cheerio');
const axios = require('axios');
async function parsePage(url) {
const response = await axios.get(url);
const $ = cheerio.load(response.data);
// पेज का टाइटल निकालें
const title = $('h1').text().trim();
// सभी लिंक्स इकट्ठा करें
const links = [];
$('a').each((i, el) => {
const href = $(el).attr('href');
if (href) links.push(href);
});
return { title, links };
}
// उपयोग
parsePage('https://example.com').then(data => console.log(data));
Cheerio कब चुनें:
- स्टैटिक पेज जिनमें डायनामिक कंटेंट न हो
- हाई परफॉर्मेंस की ज़रूरत हो
- सिंपल jQuery सिंटैक्स चाहिए
- JavaScript रेंडरिंग की ज़रूरत न हो
2. JSDOM — पूर्ण DOM इम्प्लीमेंटेशन
JSDOM ब्राउज़र एनवायरनमेंट को इम्यूलेट करता है और एक पूर्ण DOM मॉडल बनाता है। Cheerio के विपरीत, JSDOM JavaScript को सपोर्ट करता है, जिससे आप उन पेजों को पार्स कर सकते हैं जिनका कंटेंट स्क्रिप्ट से जनरेट होता है। हालांकि, इसकी कीमत है — यह लाइब्रेरी ज़्यादा रिसोर्सेज़ खाती है।
इंस्टॉलेशन
npm install jsdom
उपयोग का उदाहरण
const { JSDOM } = require('jsdom');
async function parseDynamicPage(html) {
const dom = new JSDOM(html, {
runScripts: 'dangerously',
resources: 'usable'
});
const document = dom.window.document;
// स्क्रिप्ट्स के एक्ज़ीक्यूट होने का इंतज़ार करें
await new Promise(resolve => setTimeout(resolve, 2000));
const items = [];
document.querySelectorAll('.product-item').forEach(el => {
items.push({
name: el.querySelector('.product-name')?.textContent,
price: el.querySelector('.price')?.textContent
});
});
return items;
}
// HTML पास करने का उदाहरण
const html = `<html><body><div class="product-item">...</div></body></html>`;
parseDynamicPage(html).then(data => console.log(data));
JSDOM कब चुनें:
- डायनामिक कंटेंट वाले पेज (AJAX, React, Vue)
- DOM इवेंट्स के साथ काम करना हो
- वेब एप्लिकेशन टेस्टिंग
- SPA (Single Page Application) से डेटा निकालना
3. Puppeteer — कोड से कंट्रोल किया जाने वाला ब्राउज़र
Puppeteer एक पूर्ण headless-ब्राउज़र (Chrome/Chromium) है जिसे प्रोग्रामेटिक रूप से कंट्रोल किया जा सकता है। यह JavaScript चलाता है, रिसोर्सेज़ लोड करता है, और कुकीज़ व सेशन को हैंडल करता है। Puppeteer सबसे शक्तिशाली टूल है, लेकिन रिसोर्सेज़ के मामले में सबसे भारी भी है।
इंस्टॉलेशन
npm install puppeteer
उपयोग का उदाहरण
const puppeteer = require('puppeteer');
async function parseWithBrowser(url) {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle0' });
// डेटा निकालें