"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > वेब स्क्रैपिंग को आसान बनाया गया: कठपुतली के साथ किसी भी HTML पेज को पार्स करें

वेब स्क्रैपिंग को आसान बनाया गया: कठपुतली के साथ किसी भी HTML पेज को पार्स करें

2024-11-05 को प्रकाशित
ब्राउज़ करें:175

Web Scraping Made Easy: Parse Any HTML Page with Puppeteer

एक ई-कॉमर्स प्लेटफॉर्म बनाने की कल्पना करें जहां हम ईबे, अमेज़ॅन और फ्लिपकार्ट जैसे प्रमुख स्टोरों से वास्तविक समय में उत्पाद डेटा आसानी से प्राप्त कर सकें। निश्चित रूप से, Shopify और इसी तरह की सेवाएँ हैं, लेकिन ईमानदारी से कहें तो केवल एक प्रोजेक्ट के लिए सदस्यता खरीदना थोड़ा बोझिल लग सकता है। तो, मैंने सोचा, क्यों न इन साइटों को खंगाला जाए और उत्पादों को सीधे हमारे डेटाबेस में संग्रहीत किया जाए? यह हमारी ई-कॉमर्स परियोजनाओं के लिए उत्पाद प्राप्त करने का एक कुशल और लागत प्रभावी तरीका होगा।

वेब स्क्रैपिंग क्या है?

वेब स्क्रैपिंग में सामग्री को पढ़ने और एकत्र करने के लिए वेब पेजों के HTML को पार्स करके वेबसाइटों से डेटा निकालना शामिल है। इसमें अक्सर ब्राउज़र को स्वचालित करना या साइट पर HTTP अनुरोध भेजना और फिर टेक्स्ट, लिंक या छवियों जैसी जानकारी के विशिष्ट टुकड़ों को पुनः प्राप्त करने के लिए HTML संरचना का विश्लेषण करना शामिल होता है। कठपुतली एक लाइब्रेरी है जिसका उपयोग वेबसाइटों को खंगालने के लिए किया जाता है।

?कठपुतली क्या है?

Puppeteer एक Node.js लाइब्रेरी है। यह हेडलेस क्रोम या क्रोमियम ब्राउज़र को नियंत्रित करने के लिए एक उच्च स्तरीय एपीआई प्रदान करता है। हेडलेस क्रोम क्रोम का एक संस्करण है जो यूआई के बिना सब कुछ चलाता है (पृष्ठभूमि में चीजों को चलाने के लिए बिल्कुल सही)।

हम कठपुतली का उपयोग करके विभिन्न कार्यों को स्वचालित कर सकते हैं, जैसे:

  • वेब स्क्रैपिंग: वेबसाइटों से सामग्री निकालने में पेज के HTML और जावास्क्रिप्ट के साथ इंटरैक्ट करना शामिल है। हम आम तौर पर सीएसएस चयनकर्ताओं को लक्षित करके सामग्री पुनर्प्राप्त करते हैं।
  • पीडीएफ जेनरेशन: वेब पेजों को प्रोग्रामेटिक रूप से पीडीएफ में परिवर्तित करना तब आदर्श होता है जब आप स्क्रीनशॉट लेने और फिर स्क्रीनशॉट को पीडीएफ में बदलने के बजाय सीधे वेब पेज से पीडीएफ जेनरेट करना चाहते हैं। (पी.एस. क्षमा करें यदि आपके पास इसके लिए पहले से ही उपाय हैं)।
  • स्वचालित परीक्षण: बटन क्लिक करने, फॉर्म भरने और स्क्रीनशॉट लेने जैसी उपयोगकर्ता गतिविधियों का अनुकरण करके वेब पेजों पर परीक्षण चलाना। इससे यह सुनिश्चित करने के लिए कि सब कुछ सही जगह पर है, मैन्युअल रूप से लंबे फॉर्म भरने की कठिन प्रक्रिया समाप्त हो जाती है।

?कठपुतली के साथ शुरुआत कैसे करें?

सबसे पहले हमें लाइब्रेरी स्थापित करनी होगी, आगे बढ़ें और यह करें।
एनपीएम का उपयोग करना:

npm i puppeteer # Downloads compatible Chrome during installation.
npm i puppeteer-core # Alternatively, install as a library, without downloading Chrome.

यार्न का उपयोग करना:

yarn add puppeteer // Downloads compatible Chrome during installation.
yarn add puppeteer-core // Alternatively, install as a library, without downloading Chrome.

पीएनपीएम का उपयोग करना:

pnpm add puppeteer # Downloads compatible Chrome during installation.
pnpm add puppeteer-core # Alternatively, install as a library, without downloading Chrome.

? कठपुतली के उपयोग को प्रदर्शित करने के लिए उदाहरण

यहां किसी वेबसाइट को स्क्रैप करने का एक उदाहरण दिया गया है। (पी.एस. मैंने अपने ई-कॉमर्स प्रोजेक्ट के लिए मिंत्रा वेबसाइट से उत्पादों को पुनः प्राप्त करने के लिए इस कोड का उपयोग किया था।)

const puppeteer = require("puppeteer");
const CategorySchema = require("./models/Category");

// Define the scrape function as a named async function
const scrape = async () => {
    // Launch a new browser instance
    const browser = await puppeteer.launch({ headless: false });

    // Open a new page
    const page = await browser.newPage();

    // Navigate to the target URL and wait until the DOM is fully loaded
    await page.goto('https://www.myntra.com/mens-sport-wear?rawQuery=mens sport wear', { waitUntil: 'domcontentloaded' });

    // Wait for additional time to ensure all content is loaded
    await new Promise((resolve) => setTimeout(resolve, 25000));

    // Extract product details from the page
    const items = await page.evaluate(() => {
        // Select all product elements
        const elements = document.querySelectorAll('.product-base');
        const elementsArray = Array.from(elements);

        // Map each element to an object with the desired properties
        const results = elementsArray.map((element) => {
            const image = element.querySelector(".product-imageSliderContainer img")?.getAttribute("src");
            return {
                image: image ?? null,
                brand: element.querySelector(".product-brand")?.textContent,
                title: element.querySelector(".product-product")?.textContent,
                discountPrice: element.querySelector(".product-price .product-discountedPrice")?.textContent,
                actualPrice: element.querySelector(".product-price .product-strike")?.textContent,
                discountPercentage: element.querySelector(".product-price .product-discountPercentage")?.textContent?.split(' ')[0]?.slice(1, -1),
                total: 20, // Placeholder value, adjust as needed
                available: 10, // Placeholder value, adjust as needed
                ratings: Math.round((Math.random() * 5) * 10) / 10 // Random rating for demonstration
            };
        });

        return results; // Return the list of product details
    });

    // Close the browser
    await browser.close();

    // Prepare the data for saving
    const data = {
        category: "mens-sport-wear",
        subcategory: "Mens",
        list: items
    };

    // Create a new Category document and save it to the database
    // Since we want to store product information in our e-commerce store, we use a schema and save it to the database.
    // If you don't need to save the data, you can omit this step.
    const category = new CategorySchema(data);
    console.log(category);
    await category.save();

    // Return the scraped items
    return items;
};

// Export the scrape function as the default export
module.exports = scrape;

?स्पष्टीकरण:

  • इस कोड में, हम एक वेबसाइट से उत्पाद डेटा निकालने के लिए पपेटियर का उपयोग कर रहे हैं। विवरण निकालने के बाद, हम इस डेटा को हमारे डेटाबेस में संरचना और सहेजने के लिए एक स्कीमा (श्रेणी स्कीमा) बनाते हैं। यह कदम विशेष रूप से उपयोगी है यदि हम स्क्रैप किए गए उत्पादों को अपने ई-कॉमर्स स्टोर में एकीकृत करना चाहते हैं। यदि डेटाबेस में डेटा संग्रहीत करना आवश्यक नहीं है, तो आप स्कीमा-संबंधित कोड को छोड़ सकते हैं।
  • स्क्रैप करने से पहले, पृष्ठ की HTML संरचना को समझना और यह पहचानना महत्वपूर्ण है कि कौन से सीएसएस चयनकर्ताओं में वह सामग्री है जिसे आप निकालना चाहते हैं।
  • मेरे मामले में, जिस सामग्री को मैं लक्षित कर रहा था उसे निकालने के लिए मैंने मिंत्रा वेबसाइट पर पहचाने गए प्रासंगिक सीएसएस चयनकर्ताओं का उपयोग किया।
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/niharikaa/web-scraping- made-easy-parse-any-html-page-with-puppeteer-3dk8?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 से संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3