पपेटियर बनाम सेलेनियम: वेब स्क्रैपिंग के लिए क्या चुनें?

प्रॉक्सी चुनें और खरीदें

पपेटियर बनाम सेलेनियम: वेब स्क्रैपिंग के लिए क्या चुनें?

क्या आप वेब स्क्रैपिंग के लिए Puppeteer और Selenium के बीच चयन करने का प्रयास कर रहे हैं? दोनों ही शक्तिशाली ब्राउज़र ऑटोमेशन फ़्रेमवर्क हैं, और सही विकल्प चुनना आपकी विशिष्ट स्क्रैपिंग आवश्यकताओं और उपलब्ध संसाधनों पर निर्भर करता है।

आपको सूचित निर्णय लेने में मदद करने के लिए, हमने नीचे दी गई तालिका में Puppeteer और Selenium के बीच मुख्य अंतरों को हाइलाइट किया है। इसके बाद, हम विवरणों में गहराई से जाएंगे और वेब पेजों से डेटा निकालने में उनकी प्रभावशीलता को प्रदर्शित करने के लिए प्रत्येक फ़्रेमवर्क के लिए एक स्क्रैपिंग उदाहरण प्रदान करेंगे।

मानदंडकठपुतली चलानेवालासेलेनियम
संगत भाषाएँकेवल जावास्क्रिप्ट ही आधिकारिक तौर पर समर्थित है, लेकिन अनौपचारिक PHP और पायथन पोर्ट भी हैंजावा, पायथन, C#, रूबी, PHP, जावास्क्रिप्ट, और कोटलिन
ब्राउज़र समर्थनक्रोमियम और प्रायोगिक फ़ायरफ़ॉक्स समर्थनक्रोम, सफारी, फ़ायरफ़ॉक्स, ओपेरा, एज और इंटरनेट एक्सप्लोरर
प्रदर्शन60% सेलेनियम से भी तेजतेज़
ऑपरेटिंग सिस्टम समर्थनविंडोज़, लिनक्स और मैकओएसविंडोज़, लिनक्स, मैकओएस और सोलारिस
वास्तुकलाहेडलेस ब्राउज़र इंस्टेंस के साथ इवेंट-संचालित आर्किटेक्चरब्राउज़र इंस्टैंस को नियंत्रित करने के लिए वेब ड्राइवर पर JSONWire प्रोटोकॉल
आवश्यक शर्तेंजावास्क्रिप्ट पैकेज पर्याप्त हैसेलेनियम बाइंडिंग (चयनित प्रोग्रामिंग भाषा के लिए) और ब्राउज़र वेब ड्राइवर
समुदायसेलेनियम की तुलना में छोटा समुदायअच्छी तरह से स्थापित दस्तावेज और एक बड़ा समुदाय

आइए इन लाइब्रेरीज़ पर विस्तार से चर्चा करें और वेब पेज से डेटा निकालने में उनकी दक्षता को दर्शाने के लिए प्रत्येक के साथ एक स्क्रैपिंग उदाहरण प्रस्तुत करें।

कठपुतली लोगो

कठपुतली चलानेवाला

कठपुतली चलानेवाला एक Node.js लाइब्रेरी है जो DevTools प्रोटोकॉल पर Chrome या Chromium को नियंत्रित करने के लिए एक उच्च-स्तरीय API प्रदान करती है। इसे Chrome या Chromium में कार्यों को स्वचालित करने के लिए डिज़ाइन किया गया है, जैसे स्क्रीनशॉट लेना, PDF बनाना और पृष्ठों पर नेविगेट करना।

पपेटियर का उपयोग उपयोगकर्ता की अंतःक्रियाओं का अनुकरण करके वेब पेजों के परीक्षण के लिए भी किया जा सकता है, जैसे बटनों पर क्लिक करना, फॉर्म भरना, तथा प्रदर्शित परिणामों की पुष्टि करना।

कठपुतली के लाभ

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

कठपुतली के नुकसान

  • सीमित ब्राउज़र समर्थन: सेलेनियम की तुलना में कम ब्राउज़रों का समर्थन करता है।
  • जावास्क्रिप्ट केंद्रित: मुख्य रूप से जावास्क्रिप्ट का समर्थन करता है, हालांकि पायथन और PHP के लिए अनौपचारिक पोर्ट मौजूद हैं।

पपेटियर के साथ वेब स्क्रैपिंग उदाहरण

आइए डेन्यूब वेबसाइट की अपराध और थ्रिलर श्रेणी से आइटम निकालने के लिए पपेटियर वेब स्क्रैपिंग ट्यूटोरियल के माध्यम से चलें।

डेन्यूब स्टोर: अपराध और रोमांच

आरंभ करने के लिए, Puppeteer मॉड्यूल आयात करें और Puppeteer कोड चलाने के लिए एक एसिंक्रोनस फ़ंक्शन बनाएं:

const puppeteer = require('puppeteer'); 

async function main() { 
    // Launch a headless browser instance 
    const browser = await puppeteer.launch({ headless: true });

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

    // Navigate to the target URL and wait until the loading finishes
    await page.goto('https://danube-webshop.herokuapp.com/', { waitUntil: 'networkidle2' });

    // Wait for the left-side bar to load
    await page.waitForSelector('ul.sidebar-list');

    // Click on the first element and wait for the navigation to finish
    await Promise.all([
        page.waitForNavigation(),
        page.click("ul[class='sidebar-list'] > li > a"),
    ]);

    // Wait for the book previews to load
    await page.waitForSelector("li[class='preview']");

    // Extract the book previews
    const books = await page.evaluateHandle(
        () => [...document.querySelectorAll("li[class='preview']")]
    );

    // Extract the relevant data using page.evaluate
    const processed_data = await page.evaluate(elements => {
        let data = [];
        elements.forEach(element => {
            let title = element.querySelector("div.preview-title").innerHTML;
            let author = element.querySelector("div.preview-author").innerHTML;
            let rating = element.querySelector("div.preview-details > p.preview-rating").innerHTML;
            let price = element.querySelector("div.preview-details > p.preview-price").innerHTML;

            let result = { title, author, rating, price };
            data.push(result);
        });
        return data;
    }, books);

    // Print out the extracted data
    console.log(processed_data);

    // Close the page and browser respectively
    await page.close();
    await browser.close();
}

// Run the main function to scrape the data
main();

अपेक्षित उत्पादन

जब आप कोड चलाते हैं, तो आउटपुट निम्न जैसा होना चाहिए:

[
    {
        title: 'Does the Sun Also Rise?',
        author: 'Ernst Doubtingway',
        rating: '★★★★☆',
        price: '$9.95'
    },
    {
        title: 'The Insiders',
        author: 'E. S. Hilton',
        rating: '★★★★☆',
        price: '$9.95'
    },
    {
        title: 'A Citrussy Clock',
        author: 'Bethany Urges',
        rating: '★★★★★',
        price: '$9.95'
    }
]

कठपुतली का उपयोग करने का एक और उदाहरण

वेब पेजों से डेटा स्क्रैप करने के अलावा, Puppeteer का इस्तेमाल कई तरह के ऑटोमेशन कार्यों के लिए किया जा सकता है। एक आम उपयोग मामला वेबपेज का PDF जेनरेट करना है। आइए एक उदाहरण देखें जहां Puppeteer का इस्तेमाल वेबपेज से PDF जेनरेट करने के लिए किया जाता है।

Puppeteer के साथ PDF बनाना

चरण 1: Puppeteer को आयात करें और एक एसिंक्रोनस फ़ंक्शन बनाएँ

const puppeteer = require('puppeteer');

async function generatePDF() {
    // Launch a headless browser instance
    const browser = await puppeteer.launch({ headless: true });

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

    // Navigate to the target URL
    await page.goto('https://example.com', { waitUntil: 'networkidle2' });

    // Generate a PDF from the web page
    await page.pdf({
        path: 'example.pdf', // Output file path
        format: 'A4',        // Paper format
        printBackground: true, // Include background graphics
    });

    // Close the page and browser respectively
    await page.close();
    await browser.close();
}

// Run the function to generate the PDF
generatePDF();

अतिरिक्त कठपुतली विकल्प

Puppeteer PDF बनाने के लिए कई विकल्प प्रदान करता है जिन्हें आपकी ज़रूरतों के हिसाब से कस्टमाइज़ किया जा सकता है। यहाँ कुछ विकल्प दिए गए हैं जिनका आप उपयोग कर सकते हैं:

  • path: पीडीएफ को सहेजने के लिए फ़ाइल पथ.
  • format: कागज़ का प्रारूप (जैसे, 'A4', 'लेटर').
  • printBackground: क्या पृष्ठभूमि ग्राफ़िक्स शामिल करना है.
  • landscape: करने के लिए सेट true परिदृश्य अभिविन्यास के लिए.
  • margin: पीडीएफ के लिए मार्जिन निर्दिष्ट करें (ऊपर, दाएं, नीचे, बाएं)।

अतिरिक्त विकल्पों के साथ उदाहरण:

const puppeteer = require('puppeteer');

async function generatePDF() {
    const browser = await puppeteer.launch({ headless: true });
    const page = await browser.newPage();
    await page.goto('https://example.com', { waitUntil: 'networkidle2' });

    await page.pdf({
        path: 'example.pdf',
        format: 'A4',
        printBackground: true,
        landscape: true,
        margin: {
            top: '20px',
            right: '20px',
            bottom: '20px',
            left: '20px',
        },
    });

    await page.close();
    await browser.close();
}

generatePDF();

उदाहरण आउटपुट

उपरोक्त कोड चलाने से एक पीडीएफ फाइल बनेगी जिसका नाम होगा example.pdf वेब पेज की सामग्री के साथ वर्तमान निर्देशिका में https://example.com.

Puppeteer वेब ऑटोमेशन कार्यों के लिए एक बहुमुखी उपकरण है, डेटा स्क्रैपिंग से लेकर PDF बनाने तक। इसका उपयोग में आसान और शक्तिशाली विशेषताएं इसे ब्राउज़र गतिविधियों की एक विस्तृत श्रृंखला को स्वचालित करने के लिए एक उत्कृष्ट विकल्प बनाती हैं। चाहे आप डेटा स्क्रैपिंग कर रहे हों, रिपोर्ट बना रहे हों या वेब पेजों का परीक्षण कर रहे हों, Puppeteer आपको काम को कुशलतापूर्वक पूरा करने के लिए आवश्यक उपकरण प्रदान करता है।

सेलेनियम लोगो

सेलेनियम

सेलेनियम यह एक ओपन-सोर्स एंड-टू-एंड टेस्टिंग और वेब ऑटोमेशन टूल है जिसका इस्तेमाल अक्सर वेब स्क्रैपिंग के लिए किया जाता है। इसके मुख्य घटकों में सेलेनियम आईडीई, सेलेनियम वेबड्राइवर और सेलेनियम ग्रिड शामिल हैं।

  • सेलेनियम आईडीई: स्वचालित करने से पहले क्रियाओं को रिकॉर्ड करने के लिए उपयोग किया जाता है।
  • सेलेनियम वेबड्राइवर: ब्राउज़र में आदेशों को निष्पादित करता है.
  • सेलेनियम ग्रिड: समानांतर निष्पादन सक्षम करता है.

सेलेनियम के लाभ

  • उपयोग में आसानी: उपयोग करने में सरल एवं सीधा।
  • भाषा समर्थन: पायथन, जावा, जावास्क्रिप्ट, रूबी और C# जैसी विभिन्न प्रोग्रामिंग भाषाओं का समर्थन करता है।
  • ब्राउज़र स्वचालन: फ़ायरफ़ॉक्स, एज, सफारी और यहां तक कि कस्टम QtWebKit ब्राउज़र जैसे ब्राउज़रों को स्वचालित कर सकते हैं।
  • अनुमापकता: विभिन्न ब्राउज़र सेटिंग्स वाले क्लाउड सर्वर का उपयोग करके सेलेनियम को सैकड़ों इंस्टैंस तक स्केल करना संभव है।
  • क्रॉस-प्लेटफॉर्म: विंडोज़, मैकओएस और लिनक्स पर काम करता है।

सेलेनियम के नुकसान

  • जटिल सेटअपसेलेनियम सेटअप विधियाँ जटिल हो सकती हैं।

सेलेनियम के साथ वेब स्क्रैपिंग नमूना

पपेटियर की तरह, आइए उसी लक्ष्य साइट का उपयोग करके सेलेनियम के साथ वेब स्क्रैपिंग पर एक ट्यूटोरियल देखें। हम डेन्यूब वेबसाइट की क्राइम और थ्रिलर श्रेणी से पुस्तक पूर्वावलोकन निकालेंगे।

डेन्यूब स्टोर: अपराध और रोमांच

चरण 1: आवश्यक मॉड्यूल आयात करें और सेलेनियम कॉन्फ़िगर करें

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
options.add_argument("--headless")

चरण 2: Chrome वेबड्राइवर को प्रारंभ करें

driver = webdriver.Chrome(options=options)

चरण 3: लक्ष्य वेबसाइट पर जाएँ

time.sleep(1)
crime_n_thrillers = driver.find_element(By.CSS_SELECTOR, "ul[class='sidebar-list'] > li")
crime_n_thrillers.click()
time.sleep(1)
books = driver.find_elements(By.CSS_SELECTOR, "div.shop-content li.preview")

चरण 4: अपराध और थ्रिलर श्रेणी पर क्लिक करें और पुस्तक पूर्वावलोकन निकालें

time.sleep(1)
crime_n_thrillers = driver.find_element(By.CSS_SELECTOR, "ul[class='sidebar-list'] > li")
crime_n_thrillers.click()
time.sleep(1)
books = driver.find_elements(By.CSS_SELECTOR, "div.shop-content li.preview")

चरण 5: प्रत्येक पुस्तक पूर्वावलोकन से डेटा निकालने के लिए एक फ़ंक्शन परिभाषित करें

def extract(element):
    title = element.find_element(By.CSS_SELECTOR, "div.preview-title").text
    author = element.find_element(By.CSS_SELECTOR, "div.preview-author").text
    rating = element.find_element(By.CSS_SELECTOR, "div.preview-details p.preview-rating").text
    price = element.find_element(By.CSS_SELECTOR, "div.preview-details p.preview-price").text
    return {"title": title, "author": author, "rating": rating, "price": price}

चरण 6: पूर्वावलोकन के माध्यम से लूप करें, डेटा निकालें, और ड्राइवर से बाहर निकलें

extracted_data = []
for element in books:
    data = extract(element)
    extracted_data.append(data)

print(extracted_data)
driver.quit()

अपेक्षित उत्पादन

उपरोक्त कोड चलाने से निम्नलिखित के समान आउटपुट प्राप्त होगा:

[
    {'title': 'Does the Sun Also Rise?', 'author': 'Ernst Doubtingway', 'rating': '★★★★☆', 'price': '$9.95'},
    {'title': 'The Insiders', 'author': 'E. S. Hilton', 'rating': '★★★★☆', 'price': '$9.95'},
    {'title': 'A Citrussy Clock', 'author': 'Bethany Urges', 'rating': '★★★★★', 'price': '$9.95'}
]

अतिरिक्त सेलेनियम उदाहरण: स्क्रीनशॉट लेना

डेटा स्क्रैपिंग के अलावा, सेलेनियम का उपयोग वेब पेजों के स्क्रीनशॉट लेने के लिए भी किया जा सकता है। सेलेनियम का उपयोग करके वेब पेज का स्क्रीनशॉट लेने का एक उदाहरण यहां दिया गया है।

चरण 1: आवश्यक मॉड्यूल आयात करें और सेलेनियम कॉन्फ़िगर करें

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless")

चरण 2: Chrome वेबड्राइवर को प्रारंभ करें

driver = webdriver.Chrome(options=options)

चरण 3: लक्ष्य वेबसाइट पर जाएँ

url = "https://example.com"
driver.get(url)

चरण 4: स्क्रीनशॉट लें

driver.save_screenshot("example_screenshot.png")

चरण 5: ड्राइवर से बाहर निकलें

driver.quit()

सेलेनियम वेब ऑटोमेशन कार्यों के लिए एक बहुमुखी उपकरण है, जिसमें वेब स्क्रैपिंग और स्क्रीनशॉट लेना शामिल है। कई प्रोग्रामिंग भाषाओं और ब्राउज़रों के लिए इसका समर्थन, साथ ही इसकी स्केलेबिलिटी, इसे विभिन्न ऑटोमेशन आवश्यकताओं के लिए एक शक्तिशाली विकल्प बनाती है। चाहे आप डेटा निकाल रहे हों या रिपोर्ट तैयार कर रहे हों, सेलेनियम आपके कार्यों को कुशलतापूर्वक स्वचालित करने की क्षमता प्रदान करता है।

पपेटियर बनाम सेलेनियम: गति तुलना

क्या Puppeteer Selenium से तेज़ है? इसका उत्तर है हाँ - Puppeteer आम तौर पर Selenium से तेज़ है।

पपेटियर और सेलेनियम की गति की तुलना करने के लिए, हमने डेन्यूब-स्टोर सैंडबॉक्स का उपयोग किया और निष्पादन समय का औसत निकालते हुए ऊपर प्रस्तुत स्क्रिप्ट को 20 बार चलाया।

सेलेनियम स्पीड टेस्ट

हमने प्रयोग किया time सेलेनियम स्क्रिप्ट के निष्पादन समय को मापने के लिए पायथन में मॉड्यूल। स्क्रिप्ट के आरंभ में आरंभ समय और अंत समय को अंत में दर्ज किया गया। इन समयों के बीच का अंतर कुल निष्पादन अवधि प्रदान करता है।

सेलेनियम के लिए प्रयुक्त सम्पूर्ण स्क्रिप्ट यहां दी गई है:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def extract(element):
    title = element.find_element(By.CSS_SELECTOR, "div.preview-title").text
    author = element.find_element(By.CSS_SELECTOR, "div.preview-author").text
    rating = element.find_element(By.CSS_SELECTOR, "div.preview-details p.preview-rating").text
    price = element.find_element(By.CSS_SELECTOR, "div.preview-details p.preview-price").text
    return {"title": title, "author": author, "rating": rating, "price": price}

# Start the timer
start_time = time.time()

options = webdriver.ChromeOptions()
options.add_argument("--headless")

# Create a new instance of the Chrome driver
driver = webdriver.Chrome(options=options)

url = "https://danube-webshop.herokuapp.com/"
driver.get(url)

# Click on the Crime & Thrillers category
time.sleep(1)
crime_n_thrillers = driver.find_element(By.CSS_SELECTOR, "ul[class='sidebar-list'] > li")
crime_n_thrillers.click()
time.sleep(1)

# Extract the book previews
books = driver.find_elements(By.CSS_SELECTOR, "div.shop-content li.preview")

extracted_data = []
for element in books:
    data = extract(element)
    extracted_data.append(data)

print(extracted_data)

# End the timer
end_time = time.time()
print(f"The whole script took: {end_time - start_time:.4f} seconds")

driver.quit()

कठपुतली स्पीड टेस्ट

कठपुतली स्क्रिप्ट के लिए, हमने उपयोग किया Date निष्पादन समय को मापने के लिए ऑब्जेक्ट। स्क्रिप्ट के आरंभ में आरंभ समय और अंत समय को अंत में दर्ज किया गया। इन समयों के बीच का अंतर कुल निष्पादन अवधि प्रदान करता है।

यहां पपेटियर के लिए प्रयुक्त संपूर्ण स्क्रिप्ट दी गई है:

const puppeteer = require('puppeteer');

async function main() {
    const start = Date.now();

    const browser = await puppeteer.launch({ headless: true });
    const page = await browser.newPage();
    await page.goto('https://danube-webshop.herokuapp.com/', { waitUntil: 'networkidle2' });

    await page.waitForSelector('ul.sidebar-list');

    await Promise.all([
        page.waitForNavigation(),
        page.click("ul[class='sidebar-list'] > li > a"),
    ]);

    await page.waitForSelector("li[class='preview']");
    const books = await page.evaluateHandle(
        () => [...document.querySelectorAll("li[class='preview']")]
    );

    const processed_data = await page.evaluate(elements => {
        let data = [];
        elements.forEach(element => {
            let title = element.querySelector("div.preview-title").innerHTML;
            let author = element.querySelector("div.preview-author").innerHTML;
            let rating = element.querySelector("div.preview-details > p.preview-rating").innerHTML;
            let price = element.querySelector("div.preview-details > p.preview-price").innerHTML;

            let result = { title, author, rating, price };
            data.push(result);
        });
        return data;
    }, books);

    console.log(processed_data);
    await page.close();
    await browser.close();

    const end = Date.now();
    console.log(`Execution time: ${(end - start) / 1000} seconds`);
}

main();

प्रदर्शन परीक्षण परिणाम

प्रदर्शन परीक्षणों से पता चला कि Puppeteer सेलेनियम की तुलना में लगभग 60% तेज़ है। यह गति लाभ Puppeteer को उच्च गति वाले वेब स्क्रैपिंग और स्वचालन की आवश्यकता वाले प्रोजेक्ट के लिए अधिक उपयुक्त विकल्प बनाता है, खासकर जब क्रोमियम-आधारित ब्राउज़र के साथ काम कर रहे हों।

गति परिणाम सारांश:

पपेटियर बनाम सेलेनियम स्पीड टेस्ट

नीचे दिया गया चार्ट पपेटियर और सेलेनियम के बीच प्रदर्शन अंतर को दर्शाता है:

इस संदर्भ में तेज, कुशल वेब स्क्रैपिंग की आवश्यकता वाली परियोजनाओं के लिए पपेटियर अनुप्रयोगों को बढ़ाना सर्वोत्तम विकल्प है।

पपेटियर बनाम सेलेनियम: कौन बेहतर है?

तो स्क्रैपिंग के लिए सेलेनियम और पपेटियर में से कौन बेहतर है? इस सवाल का कोई सीधा जवाब नहीं है क्योंकि यह कई कारकों पर निर्भर करता है, जैसे कि दीर्घकालिक लाइब्रेरी समर्थन, क्रॉस-ब्राउज़र समर्थन और आपकी वेब स्क्रैपिंग ज़रूरतें।

Puppeteer तेज़ है, लेकिन Selenium की तुलना में यह कम ब्राउज़रों का समर्थन करता है। Puppeteer की तुलना में Selenium ज़्यादा प्रोग्रामिंग भाषाओं का भी समर्थन करता है।

निष्कर्ष

हालाँकि, वेब स्क्रैपिंग के लिए Puppeteer या Selenium का उपयोग करना एक अच्छा विकल्प है, लेकिन अपने वेब स्क्रैपिंग प्रोजेक्ट को स्केल करना और ऑप्टिमाइज़ करना चुनौतीपूर्ण हो सकता है क्योंकि उन्नत एंटी-बॉट उपाय इन लाइब्रेरीज़ का पता लगा सकते हैं और उन्हें ब्लॉक कर सकते हैं। इससे बचने का सबसे अच्छा तरीका OneProxy जैसे वेब स्क्रैपिंग API का उपयोग करना है।

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

प्रॉक्सी सर्वर के साथ Puppeteer का उपयोग करने के लिए, आप प्रॉक्सी सेटिंग्स को पास कर सकते हैं args ब्राउज़र इंस्टेंस लॉन्च करते समय विकल्प। यहाँ एक उदाहरण है:

const puppeteer = require('puppeteer');

async function main() {
    const proxyServer = 'http://your-proxy-server:port';
    
    const browser = await puppeteer.launch({
        headless: true,
        args: [`--proxy-server=${proxyServer}`]
    });

    const page = await browser.newPage();
    await page.goto('https://example.com', { waitUntil: 'networkidle2' });

    // Perform your web scraping tasks here

    await browser.close();
}

main();

प्रॉक्सी सर्वर के साथ सेलेनियम का उपयोग करना

प्रॉक्सी सर्वर के साथ सेलेनियम का उपयोग करने के लिए, आप प्रॉक्सी विकल्प सेट कर सकते हैं webdriver.Proxy क्लास. यहाँ एक उदाहरण है:

from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType

proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = "your-proxy-server:port"
proxy.ssl_proxy = "your-proxy-server:port"

capabilities = webdriver.DesiredCapabilities.CHROME
proxy.add_to_capabilities(capabilities)

options = webdriver.ChromeOptions()
options.add_argument("--headless")

driver = webdriver.Chrome(desired_capabilities=capabilities, options=options)
driver.get("https://example.com")

# Perform your web scraping tasks here

driver.quit()

Puppeteer और Selenium के साथ प्रॉक्सी सर्वर का उपयोग करने से IP-आधारित प्रतिबंधों को बायपास करने और अवरुद्ध होने के जोखिम को कम करने में मदद मिल सकती है, जिससे आपके वेब स्क्रैपिंग कार्यों की दक्षता बढ़ जाती है। OneProxy की घूमने वाली प्रॉक्सी इस प्रक्रिया को और अधिक अनुकूलित किया जा सकता है, जिससे निर्बाध स्क्रैपिंग अनुभव प्राप्त हो सकता है।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

Puppeteer और Selenium दोनों ही ब्राउज़र ऑटोमेशन फ्रेमवर्क हैं जिनका उपयोग वेब स्क्रैपिंग, परीक्षण और ब्राउज़र कार्यों को स्वचालित करने के लिए किया जाता है। Puppeteer एक Node.js लाइब्रेरी है जो DevTools प्रोटोकॉल पर Chrome या Chromium को नियंत्रित करती है, जबकि Selenium एक ओपन-सोर्स टूल है जो अपने WebDriver API के माध्यम से विभिन्न ब्राउज़रों और प्रोग्रामिंग भाषाओं का समर्थन करता है।

Puppeteer आम तौर पर Selenium से तेज़ होता है। हालाँकि, आपके वेब स्क्रैपिंग या ऑटोमेशन प्रोजेक्ट में इस्तेमाल किए जाने वाले विशिष्ट कार्यों और कॉन्फ़िगरेशन के आधार पर गति का अंतर अलग-अलग हो सकता है।

Puppeteer को उपयोग में आसानी, गति और डिफ़ॉल्ट रूप से हेडलेस मोड में कार्यों को स्वचालित करने की क्षमता के लिए जाना जाता है। यह क्रोमियम का समर्थन करता है और इसमें एक मजबूत इवेंट-संचालित आर्किटेक्चर है जो कोड में मैन्युअल स्लीप कॉल की आवश्यकता को समाप्त करता है।

सेलेनियम की तुलना में पपेटियर कम ब्राउज़रों का समर्थन करता है और मुख्य रूप से जावास्क्रिप्ट पर ध्यान केंद्रित करता है, हालांकि पायथन और PHP जैसी अन्य भाषाओं के लिए अनौपचारिक पोर्ट मौजूद हैं।

आप प्रॉक्सी सेटिंग्स को पास करके Puppeteer को प्रॉक्सी सर्वर का उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं args ब्राउज़र लॉन्च करते समय विकल्प चुनें.

सेलेनियम कई प्रोग्रामिंग भाषाओं (पायथन, जावा, जावास्क्रिप्ट, रूबी, C#) का समर्थन करता है और फ़ायरफ़ॉक्स, एज, सफारी और QtWebKit जैसे कस्टम ब्राउज़र सहित विभिन्न ब्राउज़रों को स्वचालित कर सकता है। यह विभिन्न ब्राउज़र सेटिंग्स के साथ क्लाउड सर्वर सेट अप करने जैसी तकनीकों के माध्यम से व्यापक स्केलेबिलिटी की भी अनुमति देता है।

सेलेनियम को स्थापित करना पपेटियर की तुलना में अधिक जटिल हो सकता है, खासकर जब इसे विभिन्न ब्राउज़रों और वातावरणों के लिए कॉन्फ़िगर किया जाता है।

आप सेलेनियम में प्रॉक्सी सर्वर सेट अप कर सकते हैं webdriver.Proxy कक्षा।

हमने डैन्यूब-स्टोर सैंडबॉक्स पर पपेटियर और सेलेनियम दोनों का उपयोग करके समान वेब स्क्रैपिंग कार्य चलाए। प्रत्येक स्क्रिप्ट को 20 बार निष्पादित किया गया, और प्रदर्शन की तुलना करने के लिए औसत निष्पादन समय की गणना की गई।

परिणामों से पता चला कि पपेटियर सेलेनियम की तुलना में लगभग 60% तेज है, जिससे यह उच्च गति वाले वेब स्क्रैपिंग और स्वचालन कार्यों के लिए बेहतर विकल्प बन जाता है।

OneProxy आपको ब्लॉक होने से बचाने में मदद कर सकता है। OneProxy एंटी-बॉट बायपासिंग को संभालता है, रोटेटिंग प्रॉक्सी, हेडलेस ब्राउज़र, स्वचालित रीट्रीज़ और बहुत कुछ प्रदान करता है, जिससे एक सहज वेब स्क्रैपिंग अनुभव सुनिश्चित होता है।

डेटासेंटर प्रॉक्सी
साझा प्रॉक्सी

बड़ी संख्या में विश्वसनीय और तेज़ प्रॉक्सी सर्वर।

पे शुरुवात$0.06 प्रति आईपी
घूर्णनशील प्रॉक्सी
घूर्णनशील प्रॉक्सी

भुगतान-प्रति-अनुरोध मॉडल के साथ असीमित घूर्णन प्रॉक्सी।

पे शुरुवातप्रति अनुरोध $0.0001
निजी प्रॉक्सी
यूडीपी प्रॉक्सी

यूडीपी समर्थन के साथ प्रॉक्सी।

पे शुरुवात$0.4 प्रति आईपी
निजी प्रॉक्सी
निजी प्रॉक्सी

व्यक्तिगत उपयोग के लिए समर्पित प्रॉक्सी।

पे शुरुवात$5 प्रति आईपी
असीमित प्रॉक्सी
असीमित प्रॉक्सी

असीमित ट्रैफ़िक वाले प्रॉक्सी सर्वर।

पे शुरुवात$0.06 प्रति आईपी
क्या आप अभी हमारे प्रॉक्सी सर्वर का उपयोग करने के लिए तैयार हैं?
$0.06 प्रति आईपी से