Puppeteer در مقابل سلنیوم: چه چیزی را برای خراش دادن وب انتخاب کنیم؟

انتخاب و خرید پروکسی

Puppeteer در مقابل سلنیوم: چه چیزی را برای خراش دادن وب انتخاب کنیم؟

آیا می خواهید بین Puppeteer و Selenium برای خراش دادن وب تصمیم بگیرید؟ هر دو چارچوب اتوماسیون مرورگر قدرتمندی هستند و انتخاب درست به نیازهای خاص خراش و منابع موجود شما بستگی دارد.

برای کمک به شما در تصمیم گیری آگاهانه، تفاوت های کلیدی بین Puppeteer و Selenium را در جدول زیر برجسته کرده ایم. پس از آن، جزئیات را بررسی می کنیم و یک مثال خراش دادن برای هر چارچوب ارائه می کنیم تا اثربخشی آنها را در استخراج داده ها از صفحات وب نشان دهیم.

شاخصعروسک گردانسلنیوم
زبان های سازگارفقط جاوا اسکریپت به طور رسمی پشتیبانی می شود، اما پورت های غیر رسمی PHP و Python وجود داردجاوا، پایتون، C#، روبی، پی اچ پی، جاوا اسکریپت و کاتلین
پشتیبانی مرورگرپشتیبانی از کرومیوم و آزمایشی فایرفاکسکروم، سافاری، فایرفاکس، اپرا، اج و اینترنت اکسپلورر
کارایی60% سریعتر از سلنیومسریع
پشتیبانی از سیستم عاملویندوز، لینوکس و macOSویندوز، لینوکس، macOS و Solaris
معماریمعماری رویداد محور با نمونه های مرورگر بدون سرپروتکل JSONWire در درایور وب برای کنترل نمونه مرورگر
پیش نیازهابسته جاوا اسکریپت کافی استSelenium Bindings (برای زبان برنامه نویسی انتخاب شده) و درایورهای وب مرورگر
انجمنجامعه کوچکتر در مقایسه با سلنیوماسناد تثبیت شده و یک جامعه بزرگ

بیایید به بحث درباره این کتابخانه‌ها به تفصیل ادامه دهیم و یک مثال خراش دادن با هرکدام برای نشان دادن کارایی آنها در استخراج داده‌ها از یک صفحه وب انجام دهیم.

لوگوی عروسک گردان

عروسک گردان

عروسک گردان یک کتابخانه Node.js است که یک API سطح بالا برای کنترل Chrome یا Chromium از طریق پروتکل DevTools ارائه می دهد. این برای خودکارسازی وظایف در Chrome یا Chromium، مانند گرفتن اسکرین شات، تولید PDF، و پیمایش صفحات طراحی شده است.

Puppeteer همچنین می تواند برای آزمایش صفحات وب با شبیه سازی تعاملات کاربر مانند کلیک کردن روی دکمه ها، پر کردن فرم ها و تأیید نتایج نمایش داده شده استفاده شود.

مزایای Puppeteer

  • راحتی در استفاده: استفاده ساده و سرراست.
  • همراه با Chromium: نیازی به تنظیم اضافی نیست.
  • حالت بدون سر: به طور پیش فرض در حالت هدلس اجرا می شود اما می توان آن را برای اجرا در حالت کامل مرورگر پیکربندی کرد.
  • معماری رویداد محور: نیاز به تماس های خواب دستی در کد شما را از بین می برد.
  • قابلیت های جامع: می تواند اسکرین شات بگیرد، پی دی اف تولید کند و تمام اقدامات مرورگر را خودکار کند.
  • مدیریت اجرایی: ابزارهایی را برای ضبط زمان اجرا و عملکرد بارگذاری برای بهینه سازی و اشکال زدایی اسکراپر ارائه می دهد.
  • SPA Crawling: قابلیت خزیدن اپلیکیشن های تک صفحه ای (SPA) و تولید محتوای از پیش رندر شده (رندر سمت سرور).
  • ضبط اسکریپت: امکان ایجاد اسکریپت های Puppeteer را با ضبط اقدامات در مرورگر با استفاده از کنسول DevTools می دهد.

معایب عروسک گردانی

  • پشتیبانی محدود از مرورگر: در مقایسه با سلنیوم از مرورگرهای کمتری پشتیبانی می کند.
  • جاوا اسکریپت متمرکز: در درجه اول از جاوا اسکریپت پشتیبانی می کند، اگرچه پورت های غیر رسمی برای Python و PHP وجود دارد.

مثال خراش دادن وب با Puppeteer

بیایید آموزش خراش دادن وب Puppeteer را برای استخراج موارد از دسته جنایی و هیجان انگیز وب سایت دانوب مرور کنیم.

فروشگاه دانوب: جنایی و هیجان انگیز

برای شروع، ماژول 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

علاوه بر خراش دادن داده ها از صفحات وب، Puppeteer می تواند برای انواع کارهای اتوماسیون نیز استفاده شود. یکی از موارد استفاده رایج این است که یک PDF از یک صفحه وب ایجاد کنید. بیایید مثالی را مرور کنیم که در آن Puppeteer برای تولید PDF از یک صفحه وب استفاده می شود.

تولید PDF با Puppeteer

مرحله 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: مسیر فایل برای ذخیره PDF.
  • format: فرمت کاغذ (به عنوان مثال، 'A4'، 'Letter').
  • printBackground: شامل گرافیک پس‌زمینه باشد.
  • landscape: تنظیم کنید true برای جهت گیری منظره
  • margin: حاشیه هایی را برای PDF (بالا، راست، پایین، چپ) مشخص کنید.

مثال با گزینه های اضافی:

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();

خروجی نمونه

با اجرای کد بالا یک فایل PDF با نام ایجاد می شود example.pdf در فهرست فعلی با محتویات صفحه وب https://example.com.

Puppeteer یک ابزار همه کاره برای کارهای اتوماسیون وب، از خراش دادن داده ها تا تولید PDF است. سهولت استفاده و ویژگی های قدرتمند آن را به انتخابی عالی برای خودکارسازی طیف وسیعی از فعالیت های مرورگر تبدیل کرده است. چه در حال جمع کردن داده ها، تولید گزارش یا آزمایش صفحات وب باشید، Puppeteer ابزارهایی را که برای انجام کارها به آن نیاز دارید، فراهم می کند.

لوگوی سلنیوم

سلنیوم

سلنیوم یک ابزار متن باز تست سرتاسر و اتوماسیون وب است که اغلب برای خراش دادن وب استفاده می شود. اجزای اصلی آن عبارتند از Selenium IDE، Selenium WebDriver و Selenium Grid.

  • سلنیوم IDE: برای ضبط اقدامات قبل از خودکار کردن آنها استفاده می شود.
  • سلنیوم وب درایور: دستورات را در مرورگر اجرا می کند.
  • شبکه سلنیوم: اجرای موازی را فعال می کند.

مزایای سلنیوم

  • راحتی در استفاده: استفاده ساده و سرراست.
  • پشتیبانی از زبان: پشتیبانی از زبان های برنامه نویسی مختلف مانند پایتون، جاوا، جاوا اسکریپت، روبی و C#.
  • اتوماسیون مرورگر: می تواند مرورگرهایی مانند Firefox، Edge، Safari و حتی مرورگرهای سفارشی QtWebKit را خودکار کند.
  • مقیاس پذیری: با استفاده از سرورهای ابری با تنظیمات مختلف مرورگر، می‌توان سلنیوم را به صدها نمونه مقیاس کرد.
  • کراس پلتفرم: روی ویندوز، macOS و لینوکس کار می کند.

مضرات سلنیوم

  • راه اندازی پیچیده: روش های تنظیم سلنیوم می تواند پیچیده باشد.

نمونه خراش دادن وب با سلنیوم

مانند Puppeteer، بیایید آموزش خراش دادن وب با سلنیوم را با استفاده از همان سایت هدف مرور کنیم. ما پیش نمایش کتاب را از دسته جنایی و هیجان انگیز وب سایت دانوب استخراج می کنیم.

فروشگاه دانوب: جنایی و هیجان انگیز

مرحله 1: ماژول های لازم را وارد کنید و سلنیوم را پیکربندی کنید

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

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

مرحله 2: Chrome WebDriver را راه اندازی کنید

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: بر روی 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)
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 WebDriver را راه اندازی کنید

driver = webdriver.Chrome(options=options)

مرحله 3: به وب سایت هدف بروید

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

مرحله 4: یک اسکرین شات بگیرید

driver.save_screenshot("example_screenshot.png")

مرحله 5: از Driver خارج شوید

driver.quit()

سلنیوم یک ابزار همه کاره برای کارهای اتوماسیون وب، از جمله خراش دادن وب و گرفتن اسکرین شات است. پشتیبانی آن از چندین زبان برنامه نویسی و مرورگرها، همراه با مقیاس پذیری آن، آن را به گزینه ای قدرتمند برای نیازهای مختلف اتوماسیون تبدیل می کند. چه در حال استخراج داده‌ها یا تولید گزارش باشید، سلنیوم قابلیت‌هایی را برای خودکارسازی وظایف شما به طور موثر فراهم می‌کند.

عروسک گردان در مقابل سلنیوم: مقایسه سرعت

آیا Puppeteer سریعتر از سلنیوم است؟ پاسخ این است که بله - Puppeteer به طور کلی سریعتر از سلنیوم است.

برای مقایسه سرعت Puppeteer و Selenium، از sandbox فروشگاه Danube استفاده کردیم و اسکریپت‌های ارائه شده در بالای ۲۰ بار را اجرا کردیم، میانگین زمان‌های اجرا را در نظر گرفتیم.

تست سرعت سلنیوم

ما استفاده کردیم 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()

تست سرعت عروسک گردان

برای فیلمنامه Puppeteer، ما از آن استفاده کردیم Date شی برای اندازه گیری زمان اجرا. زمان شروع در ابتدا و زمان پایان در پایان فیلمنامه ثبت شد. تفاوت بین این زمان ها کل مدت زمان اجرا را ارائه می دهد.

در اینجا اسکریپت کامل مورد استفاده برای Puppeteer آمده است:

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 را به انتخاب مناسب تری برای پروژه هایی که نیاز به اسکراپینگ و اتوماسیون وب با سرعت بالا دارند، به خصوص هنگام کار با مرورگرهای مبتنی بر Chromium تبدیل می کند.

خلاصه نتایج سرعت:

تست سرعت عروسک گردان در مقابل سلنیوم

نمودار زیر تفاوت عملکرد بین Puppeteer و Selenium را نشان می دهد:

افزایش مقیاس برنامه های Puppeteer برای پروژه هایی که نیاز به خراش دادن سریع و کارآمد وب دارند، انتخاب بهینه در این زمینه است.

عروسک گردان در مقابل سلنیوم: کدام بهتر است؟

پس کدام یک از سلنیوم و Puppeteer برای خراش دادن بهتر است؟ پاسخ مستقیمی برای این سوال وجود ندارد زیرا به عوامل متعددی مانند پشتیبانی طولانی مدت از کتابخانه، پشتیبانی از مرورگرهای متقابل و نیازهای شما برای خراش دادن وب بستگی دارد.

Puppeteer سریعتر است، اما در مقایسه با Selenium، از مرورگرهای کمتری پشتیبانی می کند. Selenium همچنین از زبان های برنامه نویسی بیشتری در مقایسه با Puppeteer پشتیبانی می کند.

نتیجه

اگرچه استفاده از Puppeteer یا Selenium گزینه خوبی برای خراش دادن وب است، اما افزایش مقیاس و بهینه سازی پروژه خراش وب شما می تواند چالش برانگیز باشد زیرا اقدامات پیشرفته ضد ربات می تواند این کتابخانه ها را شناسایی و مسدود کند. بهترین راه برای جلوگیری از این امر استفاده از یک API scraping وب مانند OneProxy است.

استفاده از Puppeteer با سرورهای پروکسی

برای استفاده از 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 می تواند این فرآیند را بیشتر بهینه کند و یک تجربه خراشیدن بدون درز را ارائه دهد.

سوالات متداول (سؤالات متداول)

Puppeteer و Selenium هر دو چارچوب های اتوماسیون مرورگر هستند که برای خراش دادن وب، آزمایش و خودکارسازی وظایف مرورگر استفاده می شوند. Puppeteer یک کتابخانه Node.js است که Chrome یا Chromium را از طریق پروتکل DevTools کنترل می کند، در حالی که Selenium یک ابزار منبع باز است که از مرورگرها و زبان های برنامه نویسی مختلف از طریق WebDriver API خود پشتیبانی می کند.

عروسک گردانی عموما سریعتر از سلنیوم است. با این حال، تفاوت سرعت می تواند بسته به وظایف خاص و پیکربندی های مورد استفاده در پروژه های خراش دادن وب یا اتوماسیون شما متفاوت باشد.

Puppeteer به دلیل سهولت استفاده، سرعت و توانایی خودکارسازی وظایف در حالت هدلس به طور پیش فرض شناخته شده است. از Chromium پشتیبانی می‌کند و دارای معماری رویداد محور قوی است که نیاز به تماس‌های خواب دستی در کد را از بین می‌برد.

Puppeteer در مقایسه با Selenium از مرورگرهای کمتری پشتیبانی می کند و در درجه اول بر جاوا اسکریپت تمرکز می کند، اگرچه پورت های غیر رسمی برای زبان های دیگر مانند Python و PHP وجود دارد.

شما می توانید Puppeteer را برای استفاده از سرور پراکسی با عبور تنظیمات پراکسی در آن پیکربندی کنید args گزینه هنگام راه اندازی مرورگر.

سلنیوم از چندین زبان برنامه نویسی (پایتون، جاوا، جاوا اسکریپت، روبی، C#) پشتیبانی می کند و می تواند مرورگرهای مختلف از جمله فایرفاکس، اج، سافاری و مرورگرهای سفارشی مانند QtWebKit را خودکار کند. همچنین امکان مقیاس پذیری گسترده را از طریق تکنیک هایی مانند راه اندازی سرورهای ابری با تنظیمات مختلف مرورگر فراهم می کند.

تنظیم سلنیوم در مقایسه با Puppeteer پیچیده‌تر است، به خصوص هنگام پیکربندی آن برای مرورگرها و محیط‌های مختلف.

شما می توانید یک سرور پراکسی در Selenium با استفاده از webdriver.Proxy کلاس

ما همان وظایف خراش‌دادن وب را در جعبه شنی فروشگاه Danube با استفاده از Puppeteer و Selenium اجرا کردیم. هر اسکریپت 20 بار اجرا شد و میانگین زمان اجرا برای مقایسه عملکرد محاسبه شد.

نتایج نشان داد که Puppeteer حدود 60% سریعتر از سلنیوم است و آن را به انتخاب بهتری برای کارهای خراش دادن وب و اتوماسیون با سرعت بالا تبدیل می کند.

OneProxy می تواند به شما در جلوگیری از مسدود شدن کمک کند. OneProxy دور زدن آنتی ربات را کنترل می کند، پراکسی های چرخشی، مرورگرهای بدون هد، تلاش مجدد خودکار و موارد دیگر را ارائه می دهد و از تجربه یکپارچه خراشیدن وب اطمینان می دهد.

پراکسی های مرکز داده
پراکسی های مشترک

تعداد زیادی سرور پروکسی قابل اعتماد و سریع.

شروع در$0.06 در هر IP
پراکسی های چرخشی
پراکسی های چرخشی

پراکسی های چرخشی نامحدود با مدل پرداخت به ازای درخواست.

شروع در$0.0001 در هر درخواست
پراکسی های خصوصی
پراکسی های UDP

پروکسی هایی با پشتیبانی UDP

شروع در$0.4 در هر IP
پراکسی های خصوصی
پراکسی های خصوصی

پروکسی های اختصاصی برای استفاده فردی.

شروع در$5 در هر IP
پراکسی های نامحدود
پراکسی های نامحدود

سرورهای پروکسی با ترافیک نامحدود.

شروع در$0.06 در هر IP
در حال حاضر آماده استفاده از سرورهای پراکسی ما هستید؟
از $0.06 در هر IP