Перейти к основному содержимому

модуль selenium python

Установка​

pip install selenium

Драйвера​

Дравера это приложения которые непосредственно управляют браузером.

БраузерСсылка для скачивания драйвера
Chrome:https://chromedriver.chromium.org/downloads
Edge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox:https://github.com/mozilla/geckodriver/releases
Safari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/

Использование браузеров​

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

Chrome​

Тут можно скачать chrome для тестирования ее можно испльзвать локально.

Свободный браузер Chromium можно скачать тут или его варианты

Создание драйвера

from selenium.webdriver.chrome.service import Service as ChromeService
options = Options()
options.binary_location = "/home/path_to_local_chrome/chrome"
options.add_experimental_option("detach", True) # Если нужно, чтобы браузер на закрывался после выполнения скрипта

chromedriver = "/home/path_to_local_chromedriver/chromedriver"
service = ChromeService(executable_path=chromedriver)
driver = webdriver.Chrome(options=options, service=service)

Firefox​

Создание драйвера

firefox_options = webdriver.FirefoxOptions()
firefox_options.add_argument("--private")
driver = webdriver.Firefox(options=firefox_options)

Обнаружение автоматизаци​

По умолчанию сайт понимает когда не него заходит браузер с плагином автоматизации, или если запросы идут с браузера в headless "скрытом" режиме. Пример как происходит Обнаружение Chrome headless режима бразуера.

В некоторых случаях полезно препятствовать обнаружению.

Стандартный selenium​

Можно попробовать изменить конфиги используя стандартный модуль selenuim

from selenium.webdriver.chrome.options import Options
options = Options()

options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option('useAutomationExtension', False) # Turn-off useAutomationExtension
options.add_experimental_option("excludeSwitches", ["enable-automation"]) # Exclude the collection of enable-automation switches

driver = webdriver.Chrome(options=options)
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
print(driver.execute_script("return navigator.userAgent;"))

Сторонние сборки​

Еще вариантом могут быть уже пропатченые драйвера. Например

Официальные ссылки

Home:https://selenium.dev
Docs:selenium package API
Dev:https://github.com/SeleniumHQ/Selenium
PyPI:https://pypi.org/project/selenium/
IRC:#selenium channel on LiberaChat
Docs:selenium-python.readthedocs.io - Неплохой док от индуса