اموزشگاه برتر استان البرز

آموزش وب‌اسکرپینگ پیشرفته: جمع‌آوری داده از سایت‌های پویا با Python + Selenium

برچسب ها


ICDL آموزش برنامه نویسی آموزش برنامه نویسی به کودکان آموزش برنامه نویسی در کرج آموزش برنامه نویسی در گلشهر کرج آموزش حسابداری آموزش حسابداری بازارکار در کرج آموزش حسابداری بازار کار در کرج آموزش حسابداری تکمیلی آموزش حسابداری در کرج آموزش حسابداری در گلشهر کرج آموزش حسابداری صنعتی آموزش حسابداری مقدماتی در کرج آموزش طلاسازی آموزش طلاسازی کرج آموزش پایتون آموزش پایتون کرج آموزش کامپیوتر در کرج آموزش کامپیوتر در گلشهر کرج آموزشگاه حسابداری آموزشگاه حسابداری در کرج آموزشگاه حسابداری در گلشهر کرج آموزشگاه فنی و حرفه ای آموزشگاه فنی و حرفه ای البرز آموزشگاه فنی و حرفه ای در البرز آموزشگاه فنی و حرفه ای در کرج آموزشگاه فنی و حرفه ای در گلشهر کرج آموزشگاه فنی و حرفه ای گلشهر آموزشگاه فنی و حرفه ای گلشهر کرج آموزشگاه کامپیوتر در البرز آموزشگاه کامپیوتر در کرج آموزشگاه کامپیوتر در گلشهر کرج آموزشگاه کامپیوتر و حسابداری البرز آموزشگاه کامپیوتر گلشهر کرج آموزشگاه کامیپوتر کرج بهترین آموزشگاه حسابداری در کرج حسابداری حسابداری بازار کار حسابداری بازارکار در کرج حسابداری صنعتی دوره آموزش حسابداری طراحی سایت و سئو فروشندگی طلا مدرک فنی و حرفه ای پایتون

شبکه های اجتماعی


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

آموزش وب‌اسکرپینگ پیشرفته: جمع‌آوری داده از سایت‌های پویا با Python + Selenium

در دنیای امروز، داده‌ها نفت جدید هستند و توانایی جمع‌آوری داده از وب (Web Scraping) یک مهارت فوق‌العاده ارزشمند در علوم داده، تحلیل بازار و هوش تجاری محسوب می‌شود. بسیاری از علاقه‌مندان به پایتون کار خود را با کتابخانه‌هایی مانند `Requests` و `BeautifulSoup` آغاز می‌کنند. این ابزارها برای سایت‌های ایستا (Static) عالی هستند. اما امروزه، بخش عمده‌ای از وب “پویا” (Dynamic) است؛ محتوا با جاوا اسکریپت بارگذاری می‌شود. در این سناریو، `Requests` فقط یک صفحه خالی یا یک کد در حال بارگذاری (Loading) را دریافت می‌کند. اینجاست که Selenium وارد میدان می‌شود.

چالش سایت‌های پویا: چرا Requests و BeautifulSoup کافی نیستند؟

وقتی شما آدرس یک سایت را در مرورگر خود وارد می‌کنید، اتفاقات زیادی می‌افتد. در سایت‌های قدیمی (ایستا)، سرور یک فایل HTML کامل را برای شما ارسال می‌کرد. اما در سایت‌های مدرن (ساخته شده با React, Angular, Vue):
1. مرورگر یک فایل HTML اولیه و حداقلی دریافت می‌کند.
2. سپس، فایل‌های جاوا اسکریپت اجرا شده و از سرورهای دیگر (API) درخواست داده می‌کنند.
3. داده‌های دریافت شده (مانند لیست محصولات، نظرات کاربران، قیمت‌ها) در نهایت در صفحه “رندر” می‌شوند.

کتابخانه `Requests` فقط مرحله ۱ را انجام می‌دهد و به فایل HTML اولیه دسترسی دارد. اما Selenium یک ابزار اتوماسیون مرورگر است؛ این ابزار یک مرورگر واقعی (مانند کروم یا فایرفاکس) را باز می‌کند، منتظر می‌ماند تا تمام جاوا اسکریپت‌ها اجرا شوند (مراحل ۲ و ۳) و سپس به شما اجازه می‌دهد تا به HTML “نهایی” و رندر شده دسترسی پیدا کنید.

گام اول: نصب و راه‌اندازی Selenium

برای شروع کار با Selenium، شما به دو چیز نیاز دارید: کتابخانه پایتون و WebDriver.

  1. نصب کتابخانه Selenium:
    pip install selenium
  2. دانلود WebDriver: WebDriver پلی است بین اسکریپت پایتون شما و مرورگری که می‌خواهید کنترل کنید. شما باید درایور مخصوص مرورگر خود را دانلود کنید (مثلاً ChromeDriver برای گوگل کروم). مطمئن شوید که نسخه WebDriver با نسخه مرورگر شما مطابقت دارد. پس از دانلود، فایل اجرایی آن را در مسیری قرار دهید که پایتون به آن دسترسی داشته باشد (مثلاً کنار اسکریپت خود یا در PATH سیستم).

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

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

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

# 1. راه‌اندازی درایور
driver = webdriver.Chrome()

# 2. باز کردن URL
driver.get("https://www.example.com/dynamic-page")

try:
    # 3. انتظار هوشمند (Explicit Wait) - بخش کلیدی!
    # به درایور می‌گوییم حداکثر 10 ثانیه صبر کن تا المانی با ID="content" حاضر شود
    content_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "content"))
    )
    
    # 4. استخراج داده از المان
    print(content_element.text)

finally:
    # 5. بستن مرورگر (بسیار مهم)
    driver.quit()
        

تکنیک‌های پیشرفته: انتظار هوشمند و تعامل با صفحه

بزرگترین اشتباه در کار با Selenium استفاده از `time.sleep()` است. این کار اسکریپت شما را کند و غیرقابل اعتماد می‌کند. به جای آن، همیشه از انتظار هوشمند (Explicit Waits) استفاده کنید. `WebDriverWait` به شما امکان می‌دهد تا منتظر یک “شرط” خاص بمانید، مانند:

  • `presence_of_element_located`: المان در DOM وجود داشته باشد (حتی اگر دیده نشود).
  • `visibility_of_element_located`: المان قابل مشاهده باشد.
  • `element_to_be_clickable`: المان قابل کلیک کردن باشد.

همچنین Selenium می‌تواند با صفحه تعامل کند، درست مانند یک انسان:
کلیک کردن روی دکمه‌ها: `driver.find_element(By.ID, “load-more-btn”).click()`
پر کردن فرم‌ها: `driver.find_element(By.NAME, “search-box”).send_keys(“آموزش پایتون”)`
اسکرول کردن: `driver.execute_script(“window.scrollTo(0, document.body.scrollHeight);”)`

Selenium در برابر Requests + BeautifulSoup

ویژگی Requests + BeautifulSoup Selenium
اجرای جاوا اسکریپت ❌ خیر ✅ بله
سرعت بسیار بالا پایین (چون باید مرورگر را اجرا کند)
مصرف منابع (RAM/CPU) بسیار کم بسیار زیاد
مورد استفاده اصلی سایت‌های ایستا (Static)، APIها سایت‌های پویا (Dynamic)، تست نرم‌افزار

جمع‌بندی

Selenium ابزار نهایی برای زمانی است که سایر روش‌های اسکرپینگ شکست می‌خورند. این ابزار به شما قدرت کنترل کامل یک مرورگر را می‌دهد تا با پیچیده‌ترین سایت‌های پویا تعامل داشته باشید، روی دکمه‌ها کلیک کنید، اسکرول کنید و منتظر بارگذاری داده‌ها بمانید. اگرچه کندتر از `Requests` است، اما درهای وب مدرن را به روی شما باز می‌کند. یادگیری این ابزار قدرتمند در کنار پایتون، شما را به یک متخصص تمام عیار در زمینه جمع‌آوری داده تبدیل می‌کند، مهارتی که در آموزشگاه البرز به صورت پروژه‌محور تدریس می‌شود.

داده‌های وب مدرن را استخراج کنید!

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

  • ✅ آموزش عملی وب اسکرپینگ ایستا و پویا
  • ✅ کار با کتابخانه‌های Requests, BeautifulSoup و Selenium
  • ✅ پروژه‌های واقعی جمع‌آوری و پاکسازی داده

ثبت‌نام در دوره پایتون پیشرفته و علم داده
fa_IR