π ΠΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Π―Π½Π΄Π΅ΠΊΡΠ° ΠΏΡΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π΅ Python - ΠΏΡΠΎΡΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠΎΠ²Π΅ΡΡ
ΠΠ»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ Π―Π½Π΄Π΅ΠΊΡΠ° ΠΏΡΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
!pip install requests
!pip install pytesseract
!pip install Pillow
import requests
from PIL import Image
import pytesseract
2. ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π΅Π³ΠΎ:
captcha_url = "ΡΡΡΠ»ΠΊΠ°_Π½Π°_ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_ΠΊΠ°ΠΏΡΠΈ"
response = requests.get(captcha_url, stream=True)
with open('captcha.png', 'wb') as file:
file.write(response.content)
3. ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Pillow ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (OCR) Ρ ΠΏΠΎΠΌΠΎΡΡΡ pytesseract:
image = Image.open('captcha.png')
captcha_text = pytesseract.image_to_string(image)
print(captcha_text)
4. ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΏΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π―Π½Π΄Π΅ΠΊΡΠ° Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Π―Π½Π΄Π΅ΠΊΡΠ° ΠΏΡΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python?
ΠΠ°ΠΏΡΠ° - ΡΡΠΎ ΠΌΠ΅ΡΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π―Π½Π΄Π΅ΠΊΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π±ΠΎΡΠΎΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ ΠΏΡΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π―Π½Π΄Π΅ΠΊΡΠ°. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ Π―Π½Π΄Π΅ΠΊΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pytesseract ΠΈ Pillow
Pytesseract - ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (OCR) Π΄Π»Ρ Python, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΡΠ΅ΠΊΡΡ ΠΈΠ· ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. Pillow - ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠΌΠ΅ΡΡΠ΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ Π―Π½Π΄Π΅ΠΊΡΠ°.
import pytesseract
from PIL import Image
# Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ png
# ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Pillow
image = Image.open('captcha.png')
# ΠΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ pytesseract
captcha_text = pytesseract.image_to_string(image)
# Π Π°ΡΠΏΠ΅ΡΠ°ΡΠ°ΠΉΡΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΏΡΠΈ
print('Π Π°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΏΡΠΈ:', captcha_text)
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΏΡΠΈ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ ΠΊΠ°ΠΏΡΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π―Π½Π΄Π΅ΠΊΡΠ° ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Selenium
Selenium - ΡΡΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python. ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡ JavaScript, ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΡΠΌΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- ΠΡΠΊΡΡΡΡ Π―Π½Π΄Π΅ΠΊΡ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ΅
- ΠΠ°ΠΉΡΠΈ ΠΏΠΎΠ»Π΅ ΠΊΠ°ΠΏΡΠΈ ΠΈ Π²Π²Π΅ΡΡΠΈ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΏΡΠΈ
- ΠΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ
from selenium import webdriver
# ΠΠ°ΠΏΡΡΠΊ Π²Π΅Π±-Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°
driver = webdriver.Chrome()
# ΠΡΠΊΡΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π―Π½Π΄Π΅ΠΊΡΠ°
driver.get('https://www.yandex.ru')
# ΠΠ°ΠΉΡΠΈ ΠΏΠΎΠ»Π΅ ΠΊΠ°ΠΏΡΠΈ ΠΈ Π²Π²Π΅ΡΡΠΈ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΏΡΠΈ
captcha_input = driver.find_element_by_id('captcha-input')
captcha_input.send_keys(captcha_text)
# ΠΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ
submit_button = driver.find_element_by_id('submit-button')
submit_button.click()
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Selenium ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΈ Π²Π²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΏΡΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ Π΅Π΅ ΠΏΡΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π―Π½Π΄Π΅ΠΊΡΠ°.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ API Π±Π°Π½ΡΠΈΠΊΠ°
ΠΠ°Π½ΡΠΈΠΊ - ΡΡΠΎ ΡΠ΅ΡΠ²ΠΈΡ ΠΊΡΡΠ³Π»ΠΎΡΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ Π―Π½Π΄Π΅ΠΊΡΠ°. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ API, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ Π² ΠΎΡΠ²Π΅ΡΠ΅.
import requests
# ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ
captcha_image = open('captcha.png', 'rb')
# ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ Π½Π° API Π±Π°Π½ΡΠΈΠΊΠ°
response = requests.post('https://bantic.ru/captcha.php', files={'file': captcha_image})
# ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΏΡΠΈ ΠΈΠ· ΠΎΡΠ²Π΅ΡΠ°
captcha_text = response.json()['text']
# Π Π°ΡΠΏΠ΅ΡΠ°ΡΠ°ΠΉΡΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΏΡΠΈ
print('Π Π°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΏΡΠΈ:', captcha_text)
ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΠ°Π½ΡΠΈΠΊΠ° ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ API ΠΊΠ»ΡΡΠ°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ Π―Π½Π΄Π΅ΠΊΡΠ° ΠΏΡΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pytesseract ΠΈ Pillow Π΄Π»Ρ ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Selenium Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ ΠΈΠ»ΠΈ API ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΠ°Π½ΡΠΈΠΊ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ.