Парсер на «Selenium»: 2 урок, поиск элементов на странице
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Уроки «Selenium»
Комментариев: 0

Для того, чтобы найти элементы на странице с помощью Selenium, мы можем воспользоваться функцией find_element и find_elements.

Синтаксис:

find_element(By.Attribute, 'name_attribute')

Давайте рассмотрим по каким атрибутам мы можем вести поиск:

В таблице функция с атрибутом -> получаемый html

PythonHTMLОПИСАНИЕ
find_element(By.ID, 'user')<div id="user">text</div>Поиск по ID элемента
find_element(By.NAME, 'username')<input name="username" type="text">Поиск по имени элемента
find_element(By.LINK_TEXT, 'login')<a href="/login">Login</a>Поиск по тексту ссылки элемента
find_element(By.PARTIAL_LINK_TEXT, 'Next')<a href="/next">Next page</a>Поиск по части текста ссылки элемента
find_element(By.XPATH, '//div[@id="login"]/input')<div id="login">
   <input type="text">
</div>
Поиск используя XPath
find_element(By.TAG_NAME, 'body')<body>
   ....
</body>
Поиск по тегу элемента
find_element(By.CLASS_NAME, 'table')<div class="table">text</div>Поиск по классу элемента
find_element(By.CSS_SELECTOR, '#login > input[type="text"]')<form id="login">
   <input type="text">
</form>
Поиск по селектору элемента

Если мы хотим получить список элементов, допустим всех тегов a, мы можем воспользоваться именно функцией find_elements()

Синтаксис:

find_elements(By.Attribute, 'name_attribute')

Давайте рассмотрим пример поиска кнопки меню, нажатия на нее и поиска в этом меню кнопок входа и регистрации:

А в таком виде открывается сайт изначально:

Необходимый код:

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

from selenium import webdriver
from selenium.webdriver.common.by import By

service = Service('C:\\Users\\Razilator\\Desktop\\Courses\\Selenium\\driver\\chromedriver.exe')

driver = webdriver.Chrome(service=service)

url = 'https://notehunter.net'

try:
    driver.get(url=url)
    time.sleep(2)
    driver.find_element(By.CLASS_NAME, 'navbar-toggler').click() # Кликнем по гамбургер-меню
    time.sleep(2) # Ждем 2 секунды для прогрузки дерева
    login_btn = driver.find_element(By.XPATH, '//a[@class="nav-link btn btn-sm btn-light p-1"]') # Найдем кнопку по xpath
    register_btn = driver.find_element(By.LINK_TEXT, 'Регистрация') # Найдем кнопку по названию ссылки
    print(login_btn.text, register_btn.text)
except Exception as ex:
    print(ex)
finally:
    driver.close()
    driver.quit()

Результат:

Вход Регистрация

Пояснение:

  • Чтобы искать элементы, мы должны импортировать By: from selenium.webdriver.common.by import By
  • driver.find_element(By.CLASS_NAME, 'navbar-toggler').click() - находим кнопку гамбургер и кликаем на нее.
  • Ждем 2 секунды для подгрузки HTML.
  • driver.find_element(By.XPATH, '//a[@class="nav-link btn btn-sm btn-light p-1"]') - находим кнопку входа по Xpath.
  • driver.find_element(By.LINK_TEXT, 'Регистрация') - находим кнопку по названию ссылки.

В следующем уроке мы рассмотрим перемещение и вставку в форму необходимых символов, текста и т.д.

Теги записи: Python, Selenium, Парсер,
Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)