خراش دادن وب با سلنیوم و پایتون (به همراه مثال) – اتوماسیون مرورگر

سلنیوم یک کتابخانه پایتون است که در اسکراپینگ وب و همچنین کارهای اتوماسیون مرورگر استفاده می شود.

در این آموزش اسکراپینگ وب و اتوماسیون با سلنیوم با نمونه کدهای پایتون را یاد می گیریم.

برای این آموزش ابتدا باید پایتون را نصب کنید.

نمونه ساده خراش دادن وب با سلنیوم پایتون

بیایید با مراحل ساده شده و مثالی از نحوه انجام اتوماسیون مرورگر و خراش وب با پایتون و سلنیوم شروع کنیم.

سلنیوم را در ترمینال نصب کنید.

pip install selenium

مرورگر را خودکار کنید و چیزی را از یک صفحه وب پاک کنید.

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import time
# Install Webdriver
service = Service(ChromeDriverManager().install())

with webdriver.Chrome(service=service) as driver:
    url = 'https://www.crawler-test.com'
    driver.get(url)
    title = driver.title
    print(title)
Crawler Test Site

اکنون که دیدیم اتوماسیون مرورگر چه کاری می تواند انجام دهد، بیایید یاد بگیریم که دقیقاً سلنیوم چیست.

درایور وب سلنیوم چیست؟

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

شروع کار با سلنیوم

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

سلنیوم را نصب کنید

در زیر نحوه نصب سلنیوم با استفاده از پیپ و کوندا را خواهید آموخت.

سلنیوم را با پیپ نصب کنید

برای نصب سلنیوم با Pip، ترمینال یا خط فرمان را باز کنید و تایپ کنید:

سلنیوم را با آناکوندا نصب کنید

اگر پایتون را با Anaconda نصب کرده اید، از مسیریابی خود به Anaconda Prompt بروید.

دستور زیر را تایپ کنید.

conda install -c conda-forge selenium
سلنیوم را با کوندا نصب کنید
سلنیوم را با کوندا نصب کنید

اکنون خطی ظاهر می شود که از شما می خواهد ادامه دهید. “Y” را فشار دهید و روی enter کلیک کنید.

نصب موفقیت آمیز سلنیوم

اکنون که Selenium را نصب کرده ایم، باید یک وب درایور نصب کنیم.

Selenium Webdriver را نصب کنید

سلنیوم برای کار با مرورگر شما به یک درایور وب نیاز دارد.

شما می توانید Selenium Web Driver را از سایت مستندات یا با استفاده از webdriver-manager نصب کنید.

استفاده از مدیر درایور وب قطعا ساده ترین راه است.

Web Driver Manager را با سلنیوم نصب کنید

ساده ترین راه برای نصب درایور وب سلنیوم نصب webdriver-manager است. مدیر webdriver مرورگرهای شما را مدیریت خواهد کرد. برای نصب webdriver-manager از pip استفاده کنید.

$ pip3 install webdriver-manager

پس از نصب webdriver-manager، می‌توانید درایور کروم را با استفاده از ChromeDriverManager نصب کنید. این عملیات مدتی طول خواهد کشید.

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# Install Webdriver
service = Service(ChromeDriverManager().install())

پس از نصب درایور وب، می توانید از سلنیوم استفاده کنید.

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time 

# Install Webdriver
service = Service(ChromeDriverManager().install())

# Create Driver Instance
driver = webdriver.Chrome(service=service)

# Get Web Page
driver.get('https://www.crawler-test.com')
time.sleep(1)
driver.close()

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

درایور وب سلنیوم را به صورت دستی نصب کنید

در اینجا مراحل نصب دستی درایور وب Chrome Selenium آمده است:

  1. به selenium.dev بروید
  2. روی دانلودها در کنار Chromium/Chrome کلیک کنید
  3. نسخه ای را که با مرورگر شما مطابقت دارد در chrome://settings/help انتخاب کنید
  4. پوشه را از حالت فشرده خارج کنید
  5. سلنیوم را با پایتون اجرا کنید

مرحله 1: برای نصب Selenium Webdriver، کافی است به selenium.dev بروید و به بخش “درایورهای مرورگر شخص ثالث” بروید.

Selenium Webdriver را روی کروم نصب کنید
Selenium Webdriver را روی کروم نصب کنید
نسخه کروم خود را پیدا کنید
نسخه کروم خود را با استفاده از 3 نقطه در بالا سمت راست > راهنما > درباره Google Chrome پیدا کنید
نسخه مناسب مرورگر را نصب کنید
نسخه مناسب مرورگر را نصب کنید
مرورگری را برای نصب انتخاب کنید (مک، ویندوز یا لینوکس)

پس از انجام مراحل بالا، پایتون را باز کنید و وب درایور را از سلنیوم وارد کنید.

from selenium import webdriver

اگر همه چیز به درستی نصب شده باشد، باید چیزی شبیه به این دریافت کنید.

نصب موفقیت آمیز سلنیوم Webdrive
نصب موفقیت آمیز Selenium Webdriver

بعد، ما مرورگر خود را راه اندازی می کنیم.

پس از آن، باید مسیر اجرایی مرورگر کروم خود را پیدا کنید.

فقط برای پیدا کردنش chrome://version در مرورگر شما

برای اجرای Selenium که به صورت دستی نصب شده است، باید مسیر اجرایی را به عنوان مقدار ارسال کنید webdriver.Chrome() executable_path کلمه کلیدی.

import time
from selenium import webdriver

driver=webdriver.Chrome(executable_path=r"C:\Users\j-c.chouinard\Downloads\chromedriver_win32\chromedriver.exe") #Path to Chrome Driver
time.sleep(5) # Wait for 5 seconds, so that you can see something.
driver.close()

نحوه استفاده از درایور وب سلنیوم

برای استفاده از Selenium Web Driver، باید کتابخانه را نصب کنید، درایور وب را نصب کنید، نمونه ای از درایور وب ایجاد کنید و سپس هر یک از روش های موجود را روی شی درایور اجرا کنید.

ما نحوه نصب سلنیوم را یاد گرفتیم و اکنون نحوه استفاده از درایور وب سلنیوم را برای کارهای اتوماسیون و اهداف خراش دادن وب یاد خواهیم گرفت.

برای استفاده از درایور وب سلنیوم باید یاد بگیرید که چگونه:

  • مرورگر خود را با سلنیوم باز و بسته کنید
  • یک صفحه وب با سلنیوم باز کنید
  • عناصر HTML را در سلنیوم (بر اساس نام تگ، شناسه، کلاس، xpath یا انتخابگر CSS) پیدا کنید.
  • تعامل با عناصر موجود در سلنیوم (کلیک کردن روی پیوندها، پر کردن فرم ها)

مرورگر خود را باز و بسته کنید

برای باز و بسته کردن مرورگر خود با استفاده از سلنیوم، از close() روش بر روی webdriver.Chrome() هدف – شی.

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time 

# Install Webdriver
service = Service(ChromeDriverManager().install())

driver = webdriver.Chrome(service=service)

driver.get('https://www.crawler-test.com')
time.sleep(1)
driver.close()

مرورگری با نوعی اشاره به اینکه Chrome توسط نرم افزار تست خودکار کنترل می شود باز می شود و سپس بسته می شود.

Chrome توسط نرم افزار تست خودکار کنترل می شود
Chrome توسط نرم افزار تست خودکار کنترل می شود

اگر درایور را نبندید، مرورگر باز می ماند.

اجرای سلنیوم با مدیر زمینه

یک گزینه بهتر برای اجرای سلنیوم استفاده از مدیریت زمینه است که درایور را در صورت نیاز به طور خودکار باز و بسته می کند.

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# Install Webdriver
service = Service(ChromeDriverManager().install())

# Rune Selenium with a Context Manager
with webdriver.Chrome(service=service) as driver:
    url = 'https://www.crawler-test.com'
    driver.get(url)

مدیر زمینه روش خوبی است زیرا از فراموشی بستن درایور توسط کاربران و بستن آن حتی اگر کدهای بسته شده استثنائاتی را ایجاد کند (درست مانند زیر) جلوگیری می کند.

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
# Install Webdriver
service = Service(ChromeDriverManager().install())

# Rune Selenium with a Context Manager
with webdriver.Chrome(service=service) as driver:
    url = 'https://www.crawler-test.com'
    driver.get(url)
    
    # Force Trigger an exception
    time.sleep(3)
    a = 1/0

یک صفحه وب با سلنیوم باز کنید

برای باز کردن یک صفحه وب با Selenium Web Driver، از get() روش روی شی درایور

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
# Install Webdriver
service = Service(ChromeDriverManager().install())

# Rune Selenium with a Context Manager
with webdriver.Chrome(service=service) as driver:
    url = 'https://www.crawler-test.com'
    driver.get(url)

عناصر HTML را در سلنیوم پیدا کنید

برای پیدا کردن یک عنصر HTML از یک صفحه وب با سلنیوم، از find_element() و find_elements() متد روی شی درایور با آرگومان اول عنصری که باید پیدا شود و آرگومان دوم مقدار آن است.

driver.find_element('link text', 'Title Empty')

یافتن عناصر با XPath

برای یافتن عناصر HTML با استفاده از XPath در سلنیوم، از کلاس By از webdriver.common.by استفاده کنید.

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')

یافتن عناصر با انتخابگر CSS

برای یافتن عناصر HTML با استفاده از سینتکس CSS Selector در Selenium، از By.CSS_SELECTOR به عنوان اولین آرگومان متد ()find_element استفاده کنید.

content = driver.find_element(By.CSS_SELECTOR, 'p.content')

یافتن عناصر بر اساس نام تگ

برای یافتن عناصر HTML بر اساس نام برچسب در سلنیوم، از By.TAG_NAME به عنوان اولین آرگومان متد find_element() استفاده کنید.

from selenium.webdriver.common.by import By

heading1 = driver.find_element(By.TAG_NAME, 'h1')

یافتن عناصر بر اساس نام کلاس

برای یافتن عناصر HTML بر اساس نام کلاس در سلنیوم، از By.CLASS_NAME به عنوان اولین آرگومان متد find_element() استفاده کنید.

content = driver.find_element(By.CLASS_NAME, 'content')

تعامل با عناصر موجود در سلنیوم

سلنیوم اجازه می دهد تا با مرورگر تعامل داشته باشد و روش هایی مانند click() و send_keys() مواد و روش ها. به عنوان مثال، با این فرآیند می توانید به طور خودکار روی یک پیوند با سلنیوم کلیک کنید:

  1. درایور وب را باز کنید و به آدرس URL بروید
  2. یک عنصر را پیدا کنید و آن را در یک متغیر ذخیره کنید
  3. روی لینک کلیک کنید
# Clicking on Links with Selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import time

# Install Webdriver
service = Service(ChromeDriverManager().install())

# Rune Selenium with a Context Manager
with webdriver.Chrome(service=service) as driver:
    # 1. Go to URL
    url = 'https://www.crawler-test.com'
    driver.get(url)
    time.sleep(1)

    # 2. Find element by its link text
    link_text = driver.find_element(By.LINK_TEXT, 'Title Empty')
    
    # 3. Click on the link
    link_text.click()
    time.sleep(1)

پر کردن کادر یا فرم جستجو با سلنیوم

برای پر کردن فرم یا کادر جستجو با سلنیوم، ورودی فرم و شناسه دکمه فرم (مانند شناسه برچسب یا کلاس) را پیدا کنید. سپس از متد send_keys() برای پر کردن شی ورودی استفاده کنید و سپس از متد click() روی شی دکمه برای ارسال فرم استفاده کنید.

شناسه فرم را پیدا کنید

برای این کار روی کادر جستجو کلیک راست کرده و inspect element را بزنید.

به شناسه عنصر ورودی توجه کنید.

برای یافتن شناسه دکمه، فرآیند را تکرار کنید.

فرم را در سلنیوم پر کنید

# Clicking on Links with Selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import time

# Install Webdriver
service = Service(ChromeDriverManager().install())

# Rune Selenium with a Context Manager
with webdriver.Chrome(service=service) as driver:
    # Go to URL
    url = 'https://www.jobillico.com'
    driver.get(url)

    # Find element by its ID
    search_box = driver.find_element(By.ID, 'search-engine-keyword-job')
    
    # Fill the form
    search_box.send_keys('python')
    time.sleep(1)

    # Get Button ID
    button_id = driver.find_element(By.ID, 'btn-search-engine')

    # Click The Button
    button_id.click()
    time.sleep(3)

فرم را با شبیه سازی کلید ENTER اجرا کنید

همچنین می توانید از کلیدها برای ارسال فرم استفاده کنید. با این کار کاربری که کلید ENTER را فشار می دهد شبیه سازی می کند.

from selenium.webdriver.common.keys import Keys
search_box.send_keys(Keys.ENTER)

اینها برخی از راه هایی هستند که می توانند با هر فرمی کار کنند. مثال بعدی از روش دیگری استفاده می کند submit()در عوض عملکرد

پروژه اتوماسیون سلنیوم با پایتون

در این قسمت با جستجوی چیزی در گوگل و کلیک بر روی اولین نتیجه جستجو، سلنیوم را با یک پروژه اتوماسیون آسان در پایتون یاد خواهیم گرفت.

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

برای جستجوی چیزی در گوگل با استفاده از پایتون و سلنیوم، از متدهای find_element()، send_keys() و submit() در شی درایور استفاده کنید.

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

در اینجا مراحل انجام جستجوی گوگل با سلنیوم آمده است:

  1. یک مرورگر وب باز کنید
  2. به Google.com بروید
  3. جستجوی رشته Query
  4. مرورگر را ببندید
# Clicking on Links with Selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# Install Webdriver
service = Service(ChromeDriverManager().install())

# Rune Selenium with a Context Manager
with webdriver.Chrome(service=service) as driver:
    # Go to URL
    url = 'https://www.google.com/'
    driver.get(url)

    # Find element by its Nme
    search_box = driver.find_element(By.NAME, 'q')
    
    # Fill the form
    search_box.send_keys('Learn Selenium with jcchouinard')
    time.sleep(1)

    # Simulate pressing ENTER
    search_box.submit()
    time.sleep(5) 

اولین نتیجه را در گوگل با پایتون باز کنید

برای کلیک بر روی اولین نتیجه جستجو در گوگل با سلنیوم از Xpath برای انتخاب اولین نتیجه جستجو استفاده کنید.

حتی اگر چیزی در مورد Xpath نمی‌دانید، می‌توانید از برخی از توابع xpath برای Google استفاده مجدد کنید یا آموزش من در مورد خراش دادن وب با XPath را بخوانید.

به طور خلاصه، برای یافتن XPath اولین نتیجه جستجوی گوگل، بر روی inspect در اولین نتیجه جستجو کلیک کنید، روی عنصر HTML راست کلیک کنید. به مسیر copy > Copy Xpath بروید. با این حال باید به درایور سلنیوم نگاه کنید، نه مرورگر معمولی کروم. بنابراین، ابتدا برای بازرسی DOM جستجوی Google، این را خارج از مدیر زمینه اجرا کنید.

# Clicking on Links with Selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# Install Webdriver
service = Service(ChromeDriverManager().install())

# Rune Selenium with a Context Manager
with webdriver.Chrome(service=service) as driver:
    # Go to URL
    url = 'https://www.google.com/'
    driver.get(url)

    # Find element by its Nme
    search_box = driver.find_element(By.NAME, 'q')
    
    # Fill the form
    search_box.send_keys('Learn Selenium jcchouinard.com')
    time.sleep(1)

    # Simulate pressing ENTER
    search_box.submit()
    time.sleep(1)

    # Get first element
    first_result = driver.find_element(By.XPATH,'//*[@id="rso"]/div[1]/div/div/div[1]/div/div/div[1]/div/a/h3') 

    # Click On The Link
    first_result.click()
    time.sleep(3)

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

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

از این پست لذت بردید؟ به من بگویید چگونه سئوی خود را با استفاده از Selenium webdriver و Python خودکار می کنید.

سئو PBN | خبر های جدید سئو و هک و سرور