Получение текста из div с помощью Selenium и Python

#python #selenium

Вопрос:

Ситуация

Я использую Selenium и Python для извлечения информации со страницы

Вот div, который я хочу извлечь из:

введите описание изображения здесь

Я хочу извлечь «Registre-se» и текст «Вход».

Мой код

 from selenium import webdriver

url = 'https://www.bet365.com/#/AVR/B146/R^1'
driver = webdriver.Chrome()
driver.get(url.format(q=''))

elements = driver.find_elements_by_class_name('hm-MainHeaderRHSLoggedOutNarrow_Join ')

for e in elements:
    print(e.text)

elements = driver.find_elements_by_class_name('hm-MainHeaderRHSLoggedOutNarrow_Login ')

for e in elements:
    print(e.text)
 

Проблема

Мой код не отправляет никаких выходных данных.

HTML

 <div class="hm-MainHeaderRHSLoggedOutNarrow_Join ">Registre-se</div>
<div class="hm-MainHeaderRHSLoggedOutNarrow_Login " style="">Login</div>
 

Комментарии:

1. попробуйте get_text() метод на элементе

2. @GhostOps не работает :/

3. попробуйте получить исходный код страницы и проверьте, отличается ли имя класса html-тега от ручной проверки веб-сайта

4. Имя класса «hm-MainHeaderRHSLoggedOutMed_Login» отображается только при проверке веб-сайта, но не в источнике страницы. Что он должен делать сейчас?

5. получите источник страницы элемента, измените имена классов и повторите попытку

Ответ №1:

Посмотрев этот HTML

 <div class="hm-MainHeaderRHSLoggedOutNarrow_Join ">Registre-se</div>
<div class="hm-MainHeaderRHSLoggedOutNarrow_Login " style="">Login</div>
 

и ваш код, который мне кажется нормальным, за исключением той части, которую вы используете find_elements для одного веб — элемента.

и, прочитав этот комментарий

Имя класса «hm-MainHeaderRHSLoggedOutMed_Login» отображается только при проверке веб-сайта, но не в источнике страницы. Что он должен делать сейчас?

Ясно, что элемент находится либо в iframe, либо в теневом корне.

Причина page_source не ищет iframe.

Пожалуйста, проверьте, есть ли он в iframe, тогда вам придется сначала переключиться на iframe, а затем вы сможете использовать код, который у вас есть.

переключи его вот так :

 driver.switch_to.frame(driver.find_element_by_xpath('xpath here'))