آموزش رایگان سلنیوم در پایتون (Selenium Python)
در موارد متعددی نیاز به دریافت اطلاعاتی داریم که به سادگی در صفحات وب یافت میشود. اینترنت یکی از منابع بزرگ جمع آوری دیتا است. در این راستا سلنیوم به ما کمک میکند تا به سادگی با وبسایتها تعامل کنیم و اطلاعات آنها را جمع آوری کنیم. در این مقاله به طور مفصل نحوه دریافت اطلاعات یا انجام عملیات مشخص و الگومند وبسایتها را در پایتون را به شما خواهیم آموخت.
چرا باید از سلنیوم در پایتون استفاده کنیم؟
برای دسترسی به دیتای وبسایتهای اینترنتی، خزشگرهای Selenium به کمک ما میآیند. سلنیوم به یک مرورگر (مانند کروم یا فایرفاکس) متصل میشود تا رفتاری مانند یک کاربر واقعی از خود نشان دهد و انواع دادهها را از سایتها استخراج میکند.
همانطور که در مقاله آموزش کامل ایجاد خزشگر با استفاده از سلنیوم و PHP بیان شد:
``به طور کلی برای هر کاربردی می توانید از سلنیوم استفاده کنید. البته در مواجهه با سایتهایی که محتویات آن در منبع صفحات آن نیست ناچار به استفاده از سلنیوم هستید و کتابخانههای متداول خزش در وب کمکی به شما نخواهند کرد. معمولاً برای دریافت اطلاعات از سایت هایی که با استفاده از React.js طراحی شده و دارای لود اطلاعات به صورت AJAX هستند باید از سلنیوم استفاده کنید.``
خزش کردن در وب با سلنیوم و Python
پیشنیاز استفاده از سلنیوم چیست؟
استفاده از سلنیوم روی رایانه شخصی و انواع سرورهای لینوکس یا ویندوز قابل استفاده است. کتابخانه سلنیوم با پایتون ورژن 3.7 و بالاتر راه اندازی میشود. خبر خوب اینکه برای استفاده از سلنیوم تنها کافیست کتابخانه آن را با کمک PIP نصب کنید و نیاز به نصب نرمافزار آن به صورت مجزا نخواهید داشت.
در واقع تنها پیشنیاز استفاده از سلنیوم، نصب پایتون و یک مرورگر روی سیستم عامل مورد استفاده است. برای نصب سلنیوم راههایی وجود دارد که در ادامه به آنها اشاره میشود.
راهنمای استفاده از سلنیوم (Selenium) در Python
کتابخانه سلنیوم در پایتون به صورت Open source در دسترس قرار گرفته و مدام توسعه مییابد. در این مقاله مراحل کامل نصب تا استفاده از سلنیوم را شرح خواهیم داد.
مرحله اول: نصب کتابخانه سلنیوم (Selenium library)
نصب کتابخانه سلنیوم با دو روش ساده قابل انجام است. شما میتوانید با اجرای کامند زیر در ترمینال، سلنیوم را نصب کنید.
Command:
Collecting selenium
Output:
Collecting selenium
Downloading selenium-4.4.3-py3-none-any.whl (985 kB)
---------------------------------------- 986.0/986.0 kB 511.9 kB/s eta 0:00:00
Collecting trio~=0.17
Using cached trio-0.21.0-py3-none-any.whl (358 kB)
Collecting trio-websocket~=0.9
Using cached trio_websocket-0.9.2-py3-none-any.whl (16 kB) . . .
همچنین امکان دانلود و نصب سلنیوم از طریق وبسایت PyPi نیز وجود دارد. پس از دانلود پکیج سلنیوم از سایت بالا میتوانید با اجرای کامند زیر آن را نصب کنید.
Command:
pip install selenium-4.4.3-py3-none-any.whl
مرحله دوم: دریافت درایور مرورگر
پیش نیاز بعدی برای استفاده از آن، نصب درایور مرورگر استفاده شده است. وظیفه درایور، ایجاد ارتباط بین مرورگر و سلنیوم است. اکثر مرورگرهای مورد استفاده دارای درایور هستند که لینک دانلود موارد پر کاربرد آن را قرار دادهایم.
برای دانلود درایور گوگل کروم به صفحه دانلود آن مراجعه و بر اساس نسخه مورد استفاده آن را دریافت کنید. و یا عبارت chromedriver را در گوگل جستجو کنید.
به صفحه گیت هاب دانلود درایور فایرفاکس بروید و نسخه مد نظرتان را دانلود کنید. همچنین میتوانید geckodriver را در گوگل سرچ نمایید.
حالا فقط کافی است تا نرم افزار آن را از فایل zip استخراج کنید و در پوشه پروژه خود قرار دهید.
مرحله سوم: نوشتن کدهای Python
دیگه باید دست به کد بشیم و یه برنامه ساده برای دریافت اطلاعات همین مطلب از سایت درست کنیم.
Python:
# وارد کردن کتابخانه سلنیوم
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# ایجاد درایور برای گوگل کروم
driver = webdriver.Chrome('./chromedriver.exe')
# ایجاد درایور برای فایرفاکس
# driver = webdriver.Firefox('./geckodriver.exe')
# باز کردن همین صفحه
driver.get("https://datamining.biz/b/6")
# باز کردن پنجره تمام صفحه
driver.maximize_window()
پس از اجرای این دستورات یک پنجره جدید از مرورگر باز شده و همین مطلب را مشاهده خواهید کرد. اگر تا اینجای پروژه را با موفقیت اجرا کردید برای یادگیری جزئیات بیشتر با ما همراه شوید.
برای دریافت مطالب این صفحه، بلاک محتوی متن مقاله را پیدا میکنیم. دریافت المانها در سلنیوم با کمک ID, NAME, CLASS_NAME, TAG_NAME, XPATH و حتی متن آنها ممکن است.
برای پی بردن به Xpath المانها، صفحه را در مرورگر خود باز کرده و وارد بخش inspect element شوید (معمولا با F12). پس از انتخاب بخش مد نظر در قسمت کدها، روی آن راست کلیک کرده، کپی و Copy Xpath را انتخاب کنید.
به عنوان مثال Xpath محل قرارگیری محتوای مطالب این سایت بدین شکل است.
Xpath:
/html/body/main/section/div/div/div[1]/div[3]
با اضافه کردن کد زیر به فایل پایتون، مشخصات این مطلب را دریافت کرده و نمایش میدهیم.
Python:
element = driver.find_element(By.XPATH, '/html/body/main/section/div/div/div[1]/div[3]')
# نمایش مطلب
print(element.text)
در برخی موارد برای دسترسی به بخشی از اطلاعات باید در سایت لاگین کنیم یا یک فرم را تکمیل کنیم. کد زیر نمونهای از تکمیل فرم سلنیوم است. در این مثال متنی را در قسمت چت پشتیبانی سایت وارد کرده و ارسال میکنیم.
Python:
# ایجاد تاخیر تا زمان لود شدن بخش پشتیبان
time.sleep(8)
# تعریف متنی برای ارسال
text = "سلام، با کمک آموزش سلنیوم در پایتون تونستم یه پیام ارسال کنم. خیلی عالیه :)"
# باز کردن بخش چت با کلیک روی دکمه آن در فوتر
link = driver.find_element(By.LINK_TEXT, 'پشتیبانی آنلاین').click()
# نوشتن متن در باکس مربوطه و ارسال آن
textBox = driver.find_element(By.NAME, 'message')
textBox.send_keys(text)
textBox.send_keys(Keys.ENTER)
با کمک این ربات تونستیم یه پیام ارسال کنیم. نمونه همین کد برای فرمهای لاگین نیز قابل استفاده است. البته اگر سایت هدف دارای کپچا باشه کارتون یه کمی سخت تر میشه.
پیام ارسال شده ربات
کد کامل مثال:
Python:
# وارد کردن کتابخانه سلنیوم
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
# ایجاد درایور برای گوگل کروم
driver = webdriver.Chrome('./chromedriver')
# ایجاد درایور برای فایرفاکس
# driver = webdriver.Firefox('./geckodriver.exe')
# باز کردن همین صفحه
driver.get("https://datamining.biz/b/5")
# باز کردن پنجره تمام صفحه
driver.maximize_window()
# نمایش عنوان صفحه
print(driver.title)
# دریافت المان مطلب
element = driver.find_element(By.XPATH, '/html/body/main/section/div/div/div[1]/div[3]')
# نمایش مطلب
print(element.text)
# ایجاد تاخیر تا زمان لود شدن بخش پشتیبان
time.sleep(8)
# تعریف متنی برای ارسال
text = "سلام، با کمک آموزش سلنیوم در پایتون تونستم یه پیام ارسال کنم. خیلی عالیه :)"
# باز کردن بخش چت با کلیک روی دکمه آن در فوتر
link = driver.find_element(By.LINK_TEXT, 'پشتیبانی آنلاین').click()
# نوشتن متن در باکس مربوطه و ارسال آن
textBox = driver.find_element(By.NAME, 'message')
textBox.send_keys(text)
textBox.send_keys(Keys.ENTER)
اجرای سلنیوم پایتون به صورت HeadLess (بدون نمایش گرافیکی)
سلنیوم و پایتون سرعت مناسبی برای جمع آوری حجم زیادی از دیتا ندارد. البته راههای سریعتر دیگری وجود دارد اما در بعضی از سایتها چارهای جز استفاده از سلنیوم نداریم. استفاده از HeadLess باعث میشه تا هنگام اجرای کد، مرورگر باز نشود و با حذف پردازشهای گرافیکی علاوه بر افزایش سرعت، منابع کمتری اشغال شود.
برای استفاده از این روش درایور را به روش زیر راه اندازی کنید.
Python:
# تعیین ویژگی HeadLess
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
# ایجاد درایور برای گوگل کروم
driver = webdriver.Chrome('./chromedriver', options=options)
در صورت وجود هر گونه سؤال یا بحثی درباره این مطلب، از طریق بخش چت آنلاین سایت با ما ارتباط بگیرید. از مکالمه با شما خوشحال میشویم 😀
جهت ثبت سفارش وباسکرپ شماره تماس و توضیحات مختصری از سفارش خود را در بخش پشتیبانی ارسال نمایید. کارشناسان ما با شما تماس خواهند گرفت.
همچنین بخوانید:
لینک دانلود:
مقالات مشابه: