- 14.09.2024
- 78
- 5
- 18
- Награды
- 5
Репутация:
- Автор темы
- #1
Всем привет
Это третья часть гайда по парсеру на пайтон.
Сегодня расскжу про селениум, т.к. именно использование драйвера браузера помогает обходить ещё больше блокировок.
Установка Selenium
Для начала работы с Selenium необходимо установить библиотеку. Используйте следующую команду:
Также вам понадобится драйвер для выбранного браузера (например, ChromeDriver для Google Chrome). Для установки ChromeDriver на Ubuntu или MacOS можно воспользоваться командой:
Для Windows загрузите ChromeDriver с официального сайта и добавьте его в переменную окружения PATH.
Простой пример использования Selenium
Допустим, вы хотите автоматизировать открытие страницы Google и ввод поискового запроса. Пример кода:
В этом примере мы:
Открыли браузер и перешли на сайт Google.
Нашли элемент поля ввода по его атрибуту name="q".
Ввели текст в поле и отправили запрос.
Закрыли браузер.
Управление элементами на странице
Selenium предоставляет широкий набор методов для взаимодействия с элементами веб-страницы, такими как кнопки, чекбоксы, выпадающие списки и т.д. Например, чтобы кликнуть по кнопке:
Ожидание загрузки элементов
Иногда необходимо подождать, пока элемент появится на странице, например, при динамической подгрузке данных. Selenium поддерживает явные и неявные ожидания.
Неявные ожидания
Неявные ожидания позволяют Selenium подождать заданное количество времени перед тем, как выбросить исключение при отсутствии элемента:
Явные ожидания
Явные ожидания позволяют ожидать конкретного условия, например, когда элемент станет кликабельным:
Скриншоты страницы
Selenium также позволяет делать скриншоты страницы, что полезно для тестирования:
Работа с выпадающими списками
Для работы с выпадающими списками можно использовать класс Select. Пример:
Эти методы помогут вам обойти "активную" защиты от роботов, такую как проверка js скриптов
Это третья часть гайда по парсеру на пайтон.
Сегодня расскжу про селениум, т.к. именно использование драйвера браузера помогает обходить ещё больше блокировок.
Установка Selenium
Для начала работы с Selenium необходимо установить библиотеку. Используйте следующую команду:
Bash:
pip install selenium
Также вам понадобится драйвер для выбранного браузера (например, ChromeDriver для Google Chrome). Для установки ChromeDriver на Ubuntu или MacOS можно воспользоваться командой:
Bash:
sudo apt-get install chromium-chromedriver
Для Windows загрузите ChromeDriver с официального сайта и добавьте его в переменную окружения PATH.
Простой пример использования Selenium
Допустим, вы хотите автоматизировать открытие страницы Google и ввод поискового запроса. Пример кода:
Python:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
#Указываем путь к драйверу, если он не в PATH
driver = webdriver.Chrome()
#Открываем страницу Google
driver.get("https://www.google.com")
#Находим поле для ввода текста по его имени
search_box = driver.find_element("name", "q")
#Вводим запрос
search_box.send_keys("Selenium Python") search_box.send_keys(Keys.RETURN)
#Закрываем браузер
driver.quit()
В этом примере мы:
Открыли браузер и перешли на сайт Google.
Нашли элемент поля ввода по его атрибуту name="q".
Ввели текст в поле и отправили запрос.
Закрыли браузер.
Управление элементами на странице
Selenium предоставляет широкий набор методов для взаимодействия с элементами веб-страницы, такими как кнопки, чекбоксы, выпадающие списки и т.д. Например, чтобы кликнуть по кнопке:
Python:
from selenium import webdriver
driver = webdriver.Chrome()
#Открываем страницу
driver.get("https://www.example.com")
#Находим кнопку по её ID и кликаем по ней
button = driver.find_element("id", "submit_button") button.click()
driver.quit()
Ожидание загрузки элементов
Иногда необходимо подождать, пока элемент появится на странице, например, при динамической подгрузке данных. Selenium поддерживает явные и неявные ожидания.
Неявные ожидания
Неявные ожидания позволяют Selenium подождать заданное количество времени перед тем, как выбросить исключение при отсутствии элемента:
Python:
from selenium import webdriver
driver = webdriver.Chrome()
#Устанавливаем неявное ожидание на 10 секунд
driver.implicitly_wait(10)
driver.get("https://www.example.com") search_box = driver.find_element("name", "q")
driver.quit()
Явные ожидания
Явные ожидания позволяют ожидать конкретного условия, например, когда элемент станет кликабельным:
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://www.example.com")
# Ожидаем, пока элемент не станет кликабельным (максимум 10 секунд)
element = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "submit_button")) ) element.click()
driver.quit()
Скриншоты страницы
Selenium также позволяет делать скриншоты страницы, что полезно для тестирования:
Python:
from selenium import webdriver
driver = webdriver.Chrome() driver.get("https://www.example.com")
# Делаем скриншот и сохраняем его
driver.save_screenshot("screenshot.png")
driver.quit()
Работа с выпадающими списками
Для работы с выпадающими списками можно использовать класс Select. Пример:
Python:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome()
driver.get("https://www.example.com")
# Находим выпадающий список по его ID
dropdown = Select(driver.find_element("id", "dropdown"))
# Выбираем опцию по видимому тексту
dropdown.select_by_visible_text("Option 1")
driver.quit()
Последние темы в этом разделе:
- [Alex Erofeev] [Stepik] JavaScript: самый быстрый курс (2024)
- [Михаил Русаков] Написание лайфхаков на Python (2021)
- Пишем DDOS скрипт на Python
- [Саид Магомедов] Python. Микросервисы. Backend на FastAPI [Stepik] (2024)
- Как написать чат-бота на python
- Пишем скрипт по парсингу ответов из gdz.ru
- [Udemy] Кибербезопасность: тестирование на проникновение с помощью Python 3 (2022)
- [Udemy] [ENG] Продвинутый ИИ - глубокое обучение с подкреплением в Python (2024)
- Создание бесплатного API для генерации изображений, используя перехваченные запросы Flux
- [Андрей Сумин] [Stepik] Java с нуля до Junior + Подготовка к собеседованию (2024)