امروزه خودکارسازی مرورگرها و استخراج داده از وب، به یکی از نیازهای مهم توسعهدهندگان تبدیل شده است. ابزارهای متنوعی در این زمینه وجود دارند، اما 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 ابزاری قدرتمند برای اسکرپینگ وب و تعامل با صفحات داینامیک هستند. با استفاده از کدهای این مقاله، میتوانید پروژههای خود را به راحتی شروع کنید و دادههای موردنظر را استخراج کنید. آیا ابزارهای دیگری برای اسکرپینگ وب میشناسید؟ نظرات و خود را با ما به اشتراک بگذارید!