1 ماه قبل

بدون دیدگاه

وب اسکرپینگ با Selenium در Node.js

شروع سریع با Selenium در Node.js برای اسکرپینگ وب

Selenium و Node.js یک ترکیب قدرتمند برای اسکرپینگ وب و خودکارسازی مرورگرها هستند.

امروزه خودکارسازی مرورگرها و استخراج داده از وب، به یکی از نیازهای مهم توسعه‌دهندگان تبدیل شده است. ابزارهای متنوعی در این زمینه وجود دارند، اما Selenium با قابلیت‌های فراوان خود، یکی از محبوب‌ترین گزینه‌ها محسوب می‌شود. این ابزار به همراه Node.js، امکان انجام عملیات پیچیده روی صفحات وب، از جمله استخراج داده‌های داینامیک، پیمایش صفحات بی‌نهایت، و تعامل با عناصر را فراهم می‌کند.
در این مقاله از کد اکسپلور، روش نصب و استفاده از Selenium در Node.js را به زبانی ساده یاد می‌گیرید.

آنچه در این مقاله می‌خوانید:

  • آماده‌سازی محیط کار با Selenium و Node.js
  • روش اجرای Selenium در Node.js
  • استخراج داده‌ها از صفحات وب
  • مدیریت صفحات بی‌نهایت
  • کار با عناصر وب: تایپ کردن و کلیک کردن
  • نکات مهم برای رفع مشکلات متداول

آماده‌سازی محیط کار با Selenium و Node.js

برای شروع کار با Selenium در Node.js، ابتدا باید ابزارهای موردنیاز را نصب و پیکربندی کنید.

1. نصب Node.js:
اگر هنوز Node.js را نصب نکرده‌اید، به وب‌سایت رسمی آن مراجعه کنید. سپس با دستور زیر مطمئن شوید نصب شده است:

    node -v

    2. ایجاد پروژه جدید:
    پوشه‌ای برای پروژه ایجاد کنید و فایل package.json را با دستور زیر تنظیم کنید:

    mkdir selenium-nodejs-demo  
    cd selenium-nodejs-demo  
    npm init -y  

    3. نصب پکیج‌های موردنیاز:
    پکیج‌های Selenium و ChromeDriver را نصب کنید:

    npm install selenium-webdriver chromedriver

    روش اجرای Selenium در Node.js

    با اجرای کد زیر می‌توانید از درستی نصب Selenium اطمینان حاصل کنید:

    const { Builder } = require('selenium-webdriver');
    
    async function testSetup() {
      let driver = await new Builder().forBrowser('chrome').build();
      await driver.get('https://www.scrapingdog.com/');
      console.log('مرورگر با موفقیت باز شد!');
      await driver.quit();
    }
    
    testSetup();

    استخراج داده‌ها از صفحات وب

    برای استخراج داده‌ها، می‌توانید HTML صفحه را با متد .getPageSource() دریافت کنید. مثال:

    const { Builder } = require('selenium-webdriver');
    
    async function scrapeData() {
      let driver = await new Builder().forBrowser('chrome').build();
      await driver.get('https://www.imdb.com/chart/moviemeter/');
      let html = await driver.getPageSource();
      console.log(html);
      await driver.quit();
    }
    
    scrapeData();

    مدیریت صفحات بی‌نهایت

    برای پیمایش صفحات بی‌نهایت، از اسکرول مداوم استفاده کنید:

    const { Builder } = require('selenium-webdriver');
    
    async function infiniteScroll() {
      let driver = await new Builder().forBrowser('chrome').build();
      await driver.get('https://www.example.com/');
      
      let lastHeight = 0;
      while (true) {
        await driver.executeScript('window.scrollTo(0, document.body.scrollHeight);');
        await driver.sleep(3000);
        let currentHeight = await driver.executeScript('return document.body.scrollHeight;');
        if (currentHeight === lastHeight) break;
        lastHeight = currentHeight;
      }
      await driver.quit();
    }
    
    infiniteScroll();

    همچنین بخوانید: تفاوت‌های CommonJs و ESM

    کار با عناصر وب: تایپ کردن و کلیک کردن

    مثال تایپ در فیلد جستجوی گوگل و کلیک کردن روی دکمه جستجو:

    const { Builder, By } = require('selenium-webdriver');
    
    async function typeAndClick() {
      let driver = await new Builder().forBrowser('chrome').build();
      await driver.get('https://www.google.com');
      
      let searchBox = await driver.findElement(By.name('q'));
      await searchBox.sendKeys('کداکسپلور');
      await driver.sleep(2000);
      
      let searchButton = await driver.findElement(By.name('btnK'));
      await searchButton.click();
      await driver.sleep(3000);
    
      await driver.quit();
    }
    
    typeAndClick();

    Selenium و Node.js ابزاری قدرتمند برای اسکرپینگ وب و تعامل با صفحات داینامیک هستند. با استفاده از کدهای این مقاله، می‌توانید پروژه‌های خود را به راحتی شروع کنید و داده‌های موردنظر را استخراج کنید. آیا ابزارهای دیگری برای اسکرپینگ وب می‌شناسید؟ نظرات و خود را با ما به اشتراک بگذارید!

    دیدگاهتان را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    پیشنهاد های کد اکسپلور