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

در این مقاله، نه تنها به بررسی چند روش برای انجام این کار بدون استفاده از Selenium و WebDriver می‌پردازیم، بلکه با آموزش کتابخانه‌های Requests، BeautifulSoup...

انتشار: , زمان مطالعه: 10 دقیقه
ساخت ربات خودکار برای وب سایت ها با پایتون
دسته بندی: برنامه نویسی تعداد بازدید: 310

در دنیای برنامه‌نویسی و توسعه وب، اغلب نیاز به لاگین خودکار به وب‌سایت‌ها و پر کردن فرم‌ها به صورت خودکار پیش می‌آید. این عملیات معمولاً با استفاده از ابزارهایی مانند Selenium و WebDriver انجام می‌شود. با این حال، در برخی موارد ممکن است به دلایل مختلف نیاز داشته باشید که از روش‌های دیگری استفاده کنید که وابسته به WebDriver نباشند. در این مقاله، نه تنها به بررسی چند روش برای انجام این کار بدون استفاده از Selenium و WebDriver می‌پردازیم، بلکه با آموزش کتابخانه‌های Requests، BeautifulSoup، و mechanize، به شما نشان می‌دهیم که چگونه می‌توانید این مفاهیم را در پروژه‌ها و ایده‌های متنوع به کار ببرید. هدف از این مقاله فراتر از صرفاً ساخت لاگین و پر کردن فرم است؛ شما با یادگیری این مفاهیم قادر خواهید بود از آن‌ها در صدها پروژه جذاب و کاربردی استفاده کنید.

روش اول  استفاده از  استفاده از Selenium و WebDriver

مراحل کلی:

  1. نصب Selenium و WebDriver ابتدا باید Selenium و WebDriver مناسب برای مرورگر خود را نصب کنید. به عنوان مثال برای کروم:

pip install selenium
  • سپس WebDriver مربوطه (مثلاً chromedriver برای مرورگر کروم) را دانلود و در مسیر مناسب سیستم خود قرار دهید. در همین مقاله آموزش این کار و مفاهیم مرتبط را خواهید دید.

  • نوشتن اسکریپت برای لاگین:

    این کد یک مثال ساده برای لاگین به یک وب‌سایت است:

# Programmer : Ebrahim Shafiei (EbraSha)
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

# Set up WebDriver
driver = webdriver.Chrome(executable_path='path/to/chromedriver')

# Open the website
driver.get('https://www.example.com/login')

# Find form fields
username_field = driver.find_element(By.NAME, 'username')
password_field = driver.find_element(By.NAME, 'password')

# Fill in the fields
username_field.send_keys('your_username')
password_field.send_keys('your_password')

# Submit the form
password_field.send_keys(Keys.RETURN)

# Close the browser (optional)
# driver.quit()
  • پیدا کردن عناصر فرم: برای پیدا کردن فیلدها (مثل username و password)، باید از ابزارهایی مثل ابزار توسعه‌دهنده (Developer Tools) مرورگر خود استفاده کنید و ویژگی‌های HTML مربوط به فیلدها (مثل name, id یا class) را پیدا کنید.

  • مدیریت کوکی‌ها و جلسات (اختیاری): اگر نیاز به مدیریت کوکی‌ها یا نگهداری جلسات دارید، می‌توانید از توابع مرتبط در Selenium استفاده کنید.

نکات مهم:

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

WebDriver چیست و چگونه و از کجا برای مرورگر های مختلف آن را دانلود کنیم؟

WebDriver یک رابط برنامه‌نویسی (API) است که توسط ابزارهای اتوماسیون وب مانند Selenium برای کنترل مرورگرهای وب استفاده می‌شود. WebDriver به شما اجازه می‌دهد که مرورگر را به صورت برنامه‌نویسی شده کنترل کنید، یعنی بدون نیاز به تعامل مستقیم کاربر با مرورگر.

ویژگی‌ها و عملکرد WebDriver:

  1. کنترل مرورگرها: WebDriver می‌تواند مرورگرهای وب مختلفی مانند Google Chrome، Firefox، Safari، و Internet Explorer را کنترل کند. این کنترل شامل انجام اقداماتی مانند باز کردن صفحه وب، کلیک کردن بر روی دکمه‌ها، پر کردن فرم‌ها، و حتی مدیریت کوکی‌ها و جلسات است.

  2. تعامل با عناصر وب: WebDriver به شما اجازه می‌دهد که عناصر مختلف یک صفحه وب را شناسایی کنید و با آن‌ها تعامل کنید. این شامل پیدا کردن عناصر بر اساس ویژگی‌هایی مانند ID، name، class، tag name، و XPath می‌شود.

  3. اجرای دستورات از طریق کد: با استفاده از WebDriver، می‌توانید دستورات مختلفی را برای مرورگر ارسال کنید، مانند:

    • باز کردن یک URL خاص
    • گرفتن اسکرین‌شات از صفحه
    • گرفتن منبع HTML صفحه
    • حرکت بین صفحات (مانند کلیک بر روی لینک‌ها)
  4. مستقل از مرورگر: WebDriver به صورت مستقل از مرورگر عمل می‌کند و این به این معناست که می‌تواند در مرورگرهای مختلف اجرا شود بدون اینکه وابسته به نسخه خاصی از مرورگر باشد. برای هر مرورگر، یک WebDriver جداگانه وجود دارد (مثلاً ChromeDriver برای Chrome).

نحوه استفاده:

برای استفاده از WebDriver در یک پروژه پایتون، ابتدا باید WebDriver مربوط به مرورگر مورد نظر خود را نصب و تنظیم کنید. سپس می‌توانید از آن برای انجام تست‌ها یا خودکارسازی وظایف در مرورگر استفاده کنید. به عنوان مثال، برای کروم:

# Programmer : Ebrahim Shafiei (EbraSha)
from selenium import webdriver

# Set up WebDriver for Chrome
driver = webdriver.Chrome(executable_path='path/to/chromedriver')

# Open a website
driver.get('https://www.example.com')

WebDriver چگونه کار می‌کند؟

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

WebDriver ها را از کجا دانلود کنیم ؟

WebDriver‌ها برای مرورگرهای مختلف به طور جداگانه منتشر می‌شوند و باید بسته به مرورگری که قصد دارید از آن استفاده کنید، WebDriver مناسب را دانلود کنید. در زیر لیستی از لینک‌های دانلود WebDriver برای مرورگرهای محبوب آورده شده است:

1. Chrome (ChromeDriver)

ChromeDriver برای کنترل مرورگر Google Chrome استفاده می‌شود.

  • لینک دانلود: ChromeDriver - WebDriver for Chrome
  • پس از ورود به سایت، نسخه مناسب ChromeDriver را بر اساس نسخه مرورگر Chrome خود انتخاب کنید.

2. Firefox (GeckoDriver)

GeckoDriver برای کنترل مرورگر Mozilla Firefox استفاده می‌شود.

  • لینک دانلود: GeckoDriver - WebDriver for Firefox
  • در این صفحه می‌توانید آخرین نسخه GeckoDriver را برای سیستم‌عامل‌های مختلف دانلود کنید.

3. Safari (SafariDriver)

SafariDriver برای کنترل مرورگر Safari در سیستم‌عامل macOS استفاده می‌شود.

  • لینک دانلود: نیازی به دانلود جداگانه ندارد. SafariDriver به طور پیش‌فرض در Safari 10 و بالاتر در macOS موجود است. می‌توانید با استفاده از فرمان safaridriver در ترمینال آن را فعال کنید.

4. Edge (EdgeDriver)

EdgeDriver برای کنترل مرورگر Microsoft Edge (کرومیوم) استفاده می‌شود.

  • لینک دانلود: EdgeDriver - WebDriver for Edge
  • بر اساس نسخه Edge خود، نسخه مناسب EdgeDriver را انتخاب و دانلود کنید.

5. Internet Explorer (IEDriver)

IEDriver برای کنترل مرورگر Internet Explorer استفاده می‌شود.

نحوه استفاده از WebDriver پس از دانلود:

  1. دانلود فایل WebDriver: WebDriver مربوط به مرورگر خود را از لینک‌های بالا دانلود کنید.
  2. استخراج فایل (در صورت فشرده بودن): فایل دانلود شده ممکن است به صورت یک فایل فشرده (zip) باشد. آن را استخراج کنید.
  3. قرار دادن در مسیر مناسب: WebDriver را در مسیری قرار دهید که بتوانید آن را در برنامه خود فراخوانی کنید. معمولاً قرار دادن WebDriver در پوشه‌ای که در مسیر سیستم (PATH) است، می‌تواند مفید باشد.
  4. استفاده در کد پایتون: حالا می‌توانید با استفاده از مسیر WebDriver در کد پایتون خود، مرورگر را کنترل کنید.

مثال برای ChromeDriver:

# Programmer : Ebrahim Shafiei (EbraSha)
from selenium import webdriver

# Set up WebDriver for Chrome
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

# Open a website
driver.get('https://www.example.com')

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

روش دوم استفاده از  استفاده از  Requests و BeautifulSoup

کتابخانه Requests یکی از پرکاربردترین کتابخانه‌ها برای ارسال درخواست‌های HTTP در پایتون است. این کتابخانه به شما امکان می‌دهد تا به راحتی با وب‌سایت‌ها ارتباط برقرار کرده و داده‌ها را از آن‌ها دریافت یا به آن‌ها ارسال کنید.

کتابخانه BeautifulSoup نیز ابزاری قدرتمند برای پردازش و پارس کردن داده‌های HTML است. این کتابخانه به شما اجازه می‌دهد تا به راحتی محتوای صفحات وب را جستجو و استخراج کنید.

نصب کتابخانه‌ها

برای شروع، ابتدا باید کتابخانه‌های مورد نیاز را نصب کنیم. شما می‌توانید این کار را با استفاده از pip انجام دهید:

مرحله 1: لاگین به وب‌سایت

برای ورود به یک وب‌سایت، ابتدا باید اطلاعات ورود مانند نام کاربری و رمز عبور را به فرم ورود ارسال کنیم. فرض کنید ما می‌خواهیم به یک وب‌سایت فرضی وارد شویم که دارای یک فرم ورود ساده است.

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

# Programmer : Ebrahim Shafiei (EbraSha)

import requests
from bs4 import BeautifulSoup

# URL of the login page
login_url = 'https://example.com/login'

# Create a session
session = requests.Session()

# Get the login page
response = session.get(login_url)
soup = BeautifulSoup(response.text, 'html.parser')

# Extract CSRF token (if present)
csrf_token = soup.find('input', attrs={'name': 'csrf_token'})['value']

مرحله 2: ارسال اطلاعات ورود

پس از استخراج توکن CSRF (در صورت وجود)، می‌توانیم اطلاعات ورود را به سایت ارسال کنیم:

# Programmer : Ebrahim Shafiei (EbraSha)

# Login information
payload = {
    'username': 'your_username',
    'password': 'your_password',
    'csrf_token': csrf_token
}

# Send login request
login_response = session.post(login_url, data=payload)

# Check login status
if login_response.url == 'https://example.com/dashboard':
    print("Login successful!")
else:
    print("Login failed.")

مرحله 3: پر کردن و ارسال فرم

پس از موفقیت در ورود، می‌توانیم به صفحه‌ای که شامل فرم است دسترسی پیدا کنیم و فرم مورد نظر را پر و ارسال کنیم. فرض کنید فرم در صفحه‌ای به آدرس https://example.com/form قرار دارد:

# Programmer : Ebrahim Shafiei (EbraSha)

# Get the form page
form_url = 'https://example.com/form'
form_response = session.get(form_url)
soup = BeautifulSoup(form_response.text, 'html.parser')

# Extract CSRF token from the form page
csrf_token_form = soup.find('input', attrs={'name': 'csrf_token'})['value']

# Form data
form_data = {
    'field1': 'value1',
    'field2': 'value2',
    'csrf_token': csrf_token_form
}

# Submit the form
submit_response = session.post(form_url, data=form_data)

# Check form submission status
if 'Form submitted successfully' in submit_response.text:
    print("Form submitted successfully!")
else:
    print("Form submission failed.")

در این مقاله، نحوه استفاده از کتابخانه‌های Requests و BeautifulSoup برای ورود به یک سایت و پر کردن و ارسال فرم را بررسی کردیم. این تکنیک‌ها در تعاملات خودکار با وب‌سایت‌ها، خزیدن وب و انجام وظایف متعدد مانند جمع‌آوری داده‌ها، بسیار مفید هستند.

استفاده صحیح از این ابزارها نیازمند دقت در تشخیص عناصر صفحه و درک صحیح ساختار HTML آن‌ها است.

روش سوم استفاده از  استفاده از کتابخانه   mechanize 

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

نصب کتابخانه

برای شروع، ابتدا باید کتابخانه mechanize را نصب کنیم. شما می‌توانید این کار را با استفاده از pip انجام دهید:

pip install mechanize

مرحله 1: ورود به وب‌سایت

برای ورود به یک وب‌سایت، ابتدا باید اطلاعات ورود مانند نام کاربری و رمز عبور را به فرم ورود ارسال کنیم. در اینجا مثالی از چگونگی استفاده از mechanize برای ورود به یک وب‌سایت آورده شده است.

# Programmer : Ebrahim Shafiei (EbraSha)

import mechanize

# Create a browser object
br = mechanize.Browser()

# Open the login page
login_url = 'https://example.com/login'
br.open(login_url)

# Select the login form
br.select_form(nr=0)

# Fill the form fields
br['username'] = 'your_username'
br['password'] = 'your_password'

# Submit the form
response = br.submit()

# Check if login was successful by checking the URL or the response content
if response.geturl() == 'https://example.com/dashboard':
    print("Login successful!")
else:
    print("Login failed.")

مرحله 2: پر کردن و ارسال فرم

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

# Programmer : Ebrahim Shafiei (EbraSha)

# Open the form page
form_url = 'https://example.com/form'
br.open(form_url)

# Select the form
br.select_form(nr=0)

# Fill in the form fields
br['field1'] = 'value1'
br['field2'] = 'value2'

# Submit the form
response = br.submit()

# Check the response to confirm successful submission
if 'Form submitted successfully' in response.read().decode('utf-8'):
    print("Form submitted successfully!")
else:
    print("Form submission failed.")

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


دیدگاه های مربوط به این مقاله (برای ارسال دیدگاه در سایت حتما باید عضو باشید و پروفایل کاربری شما تکمیل شده باشد)