π ΠΠ°ΠΊ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡ ΠΊΠ°ΠΏΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Selenium Python
ΠΠ°ΠΊ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡ ΠΊΠ°ΠΏΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Selenium Π² Python?
Π§ΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Selenium Π² Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Selenium, Π΅ΡΠ»ΠΈ Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ:
- ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ChromeDriver ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π² Π²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΏΠ°ΠΏΠΊΡ
- ΠΡΠΊΡΠΎΠΉΡΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΊΠ°ΠΏΡΠ΅ΠΉ:
- ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΊΠ°ΠΏΡΠ΅ΠΉ ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ ΠΎΡΠ²Π΅Ρ:
- ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌΡ:
- ΠΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
pip install selenium
from selenium import webdriver
# Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΡΡΡ ΠΊ ChromeDriver
path_to_chromedriver = '/path/to/chromedriver'
# ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Chrome
browser = webdriver.Chrome(path_to_chromedriver)
browser.get('https://www.example.com/captcha')
# ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΊΠ°ΠΏΡΠ΅ΠΉ ΠΏΠΎ Π΅Π³ΠΎ CSS-ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ ΠΈΠ»ΠΈ XPath
captcha_input = browser.find_element_by_css_selector('#captcha-input')
# ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΎΡΠ²Π΅Ρ Π½Π° ΠΊΠ°ΠΏΡΡ
captcha_input.send_keys('ΠΎΡΠ²Π΅Ρ_Π½Π°_ΠΊΠ°ΠΏΡΡ')
submit_button = browser.find_element_by_css_selector('#submit-button')
submit_button.click()
# ΠΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ, ΠΏΠΎΠΊΠ° Π·Π°Π³ΡΡΠ·ΠΈΡΡΡ Π½ΠΎΠ²Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²Π½ΠΎΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# ΠΠΆΠΈΠ΄Π°ΠΉΡΠ΅, ΠΏΠΎΠΊΠ° ΡΠ»Π΅Π΅ΠΌΠ΅Π½Ρ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π²ΠΈΠ΄ΠΈΠΌΡΠΌ
wait = WebDriverWait(browser, 10)
element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#element-id')))
# ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π° Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅
# ...
ΠΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Selenium Π² Python. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ°ΠΏΡΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π°, ΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°Π³ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡ ΠΊΠ°ΠΏΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Selenium ΠΈ Python?
ΠΠ°ΠΏΡΠ° - ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΠΎΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π±ΠΎΡΡ ΠΈ ΡΠΊΡΠΈΠΏΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Π² Π²Π°ΡΠ΅ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π²Π΅Π±-ΡΠΊΡΠ°ΠΏΠΈΠ½Π³Π΅. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Selenium ΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python.
Π¨Π°Π³ 1: Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²:
- Python: Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Python.
- Selenium: Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Selenium Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
pip install selenium
. - WebDriver: Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ WebDriver Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ Π²Π°ΡΠΈΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ.
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
Π¨Π°Π³ 2: ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Selenium:
from selenium import webdriver
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°
driver = webdriver.Chrome('/path/to/chromedriver')
# ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΊΠ°ΠΏΡΠ΅ΠΉ
driver.get('https://example.com/captcha')
# Π Π΅ΡΠ°Π΅ΠΌ ΠΊΠ°ΠΏΡΡ
# ΠΠ΄Π΅ΡΡ Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ ΠΊΠ°ΠΏΡΠΈ ΠΈ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ Π΅Π΅ ΠΎΠ±Ρ
ΠΎΠ΄Π°
# ΠΠ°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΎΡΠ²Π΅Ρ ΠΊΠ°ΠΏΡΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΠΎΠ»Π΅
captcha_input = driver.find_element_by_id('captcha-input')
captcha_input.send_keys('answer')
# ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΎΡΠ²Π΅Ρ ΠΊΠ°ΠΏΡΠΈ
submit_button = driver.find_element_by_id('submit-button')
submit_button.click()
# ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π·Π΄Π΅ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Ρ
ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΠΊΠ°ΠΏΡΠΈ ΠΈ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°. ΠΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ ΠΊΠ°ΠΏΡΠΈ ΠΈ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ Π΅Π΅ ΠΎΠ±Ρ ΠΎΠ΄Π°.
Π¨Π°Π³ 3: ΠΠ°ΠΏΡΡΠΊ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΎΡΠ»Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .py. ΠΠ°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΊΠ°ΠΏΡΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠ±ΠΎΡΠ»Π°ΡΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°Π³ΠΈ Π² ΠΊΠΎΠ΄Π΅, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΎΡΠΌΡ, ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Π΄ΡΡΠ³ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈΠ»ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Selenium ΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ ΠΏΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π²Π΅Π±-ΡΠΊΡΠ°ΠΏΠΈΠ½Π³Π΅. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄ ΠΊΠ°ΠΏΡΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π·Π°ΠΊΠΎΠ½Π½ΡΠΌ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΡΠ°ΠΉΡΠ°. ΠΠΎΡΡΠΎΠΌΡ, ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ Ρ Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅ΠΌ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°.
Π£ΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ!