Как Python и Selenium заставить найти текст?
Всем привет, пытаюсь указать через селениум найти блок текста 1 и блок текста 2, но выдает ошибку, что текст не найден. Указывал через селектор и xpath, но все равно не видит.
Прилагаю код и картинку того, что нужно найти
# Функция для поиска элемента по селектору ID def find_element_by_id(driver, id): try: return WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, id)) ) except TimeoutException: return None # Функция для сравнения текста из двух элементов def compare_text(text1, text2): # Преобразуем текст в нижний регистр, чтобы сделать сравнение более точным text1 = text1.lower() text2 = text2.lower() # Используем метод `similarity()` Bard API для сравнения двух текстов similarity = bard.similarity(text1, text2) # Возвращаем значение, указывающее, подходит ли текст return similarity >= 0.8 # Находим элемент 1 element_1 = find_element_by_id(driver, "#klecks-app > tui-root > tui-dropdown-host > div > task > flex-view > flex-common-view > div.tui-container.tui-container_adaptive.flex-common-view__main > div > main > flex-element > flex-container > flex-element:nth-child(1)") # Находим элемент 2 element_2 = find_element_by_id(driver, "#klecks-app > tui-root > tui-dropdown-host > div > task > flex-view > flex-common-view > div.tui-container.tui-container_adaptive.flex-common-view__main > div > main > flex-element > flex-container > flex-element:nth-child(4)") # Получаем текст из элементов text1 = element_1.text text2 = element_2.text # Сравниваем текст is_similar = compare_text(text1, text2) # Выводим результат сравнения if is_similar: result = "Тексты похожи" else: result = "Тексты не похожи" print(result) |
# Функция для поиска элемента по селектору ID def find_element_by_id(driver, id): try: return WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, id)) ) except TimeoutException: return None # Функция для сравнения текста из двух элементов def compare_text(text1, text2): # Преобразуем текст в нижний регистр, чтобы сделать сравнение более точным text1 = text1.lower() text2 = text2.lower() # Используем метод `similarity()` Bard API для сравнения двух текстов similarity = bard.similarity(text1, text2) # Возвращаем значение, указывающее, подходит ли текст return similarity >= 0.8 # Находим элемент 1 element_1 = find_element_by_id(driver, "#klecks-app > tui-root > tui-dropdown-host > div > task > flex-view > flex-common-view > div.tui-container.tui-container_adaptive.flex-common-view__main > div > main > flex-element > flex-container > flex-element:nth-child(1)") # Находим элемент 2 element_2 = find_element_by_id(driver, "#klecks-app > tui-root > tui-dropdown-host > div > task > flex-view > flex-common-view > div.tui-container.tui-container_adaptive.flex-common-view__main > div > main > flex-element > flex-container > flex-element:nth-child(4)") # Получаем текст из элементов text1 = element_1.text text2 = element_2.text # Сравниваем текст is_similar = compare_text(text1, text2) # Выводим результат сравнения if is_similar: result = "Тексты похожи" else: result = "Тексты не похожи" print(result)
Дополнительно:
упрощайте ваши селекторы и найдете
(nonetype это означает)
упрощайте = укорачивайте и чтобы находил
тогда будет и текст в нем
а не можете сами публикуйте содержимое того что надо или его родителей как HTML и это может помочь другим помочь вам
Ответы:
Тестируй css селекторы в отладочной консоли браузера, используя, либо штатный querySelector('xxx'), либо, при наличии, jquery $('xxx'). Используй встроенный генератор css селектора (правая кнопка на элементе, копировать,...)
- Спасибо, буду пробовать и отпишу
Попробуй искать по xpath, а не по ID. Тогда точно найдешь.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


Для поиска текста с использованием Python и Selenium вы можете воспользоваться методами поиска элементов на веб-странице. Вот пример кода на Python, который позволит вам найти текст на веб-странице с помощью Selenium:
from selenium import webdriver # Запуск браузера driver = webdriver.Chrome() # Переход на нужную страницу driver.get("http://www.example.com") # Нахождение элемента по тексту element = driver.find_element_by_xpath("//*[contains(text(), 'Текст который нужно найти')]") # Вывод текста элемента print(element.text) # Закрытие браузера driver.quit()
В этом примере мы используем метод find_element_by_xpath, чтобы найти элемент на странице по тексту. Мы используем функцию contains, чтобы найти элемент, содержащий определенный текст. После того как мы находим элемент, мы можем получить текст этого элемента с помощью свойства text.
Пожалуйста, убедитесь, что у вас установлены необходимые библиотеки (Selenium) и драйвер браузера (например, ChromeDriver). Также обратите внимание, что для поиска элементов на странице может потребоваться использование других методов (например, find_element_by_id, find_element_by_class_name и т. д.), в зависимости от структуры HTML-кода страницы.
Надеюсь, что этот пример поможет вам решить вашу проблему с поиском текста на веб-странице с помощью Python и Selenium. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их. Удачи!